0

我有一个 AsyncTask 在 onPostExecute 方法中返回一个值,我知道如何获取该返回值的唯一方法是使用该类的全局成员变量并在 onPostExecute 方法中设置该值。

有没有更好的方法或替代方法来做到这一点?我现在所做的仅出于这个原因需要创建许多成员变量。

这就是我现在正在做的事情

  public class MainClass extends Activity {
  String takeInString = "";

  new DoItAsyncTask().execute(97);

  // nested inner class of AsyncTask inside of MainClass
  public class DoItAsyncTask extends AsyncTask<Integer, Void, String>{
    String tempString = "";

      @Override
    protected void onPostExecute(String result) {
        // TODO Auto-generated method stub
        super.onPostExecute(result);

                  // assign value of global member variable takeInString
                 takeInString = result;

        }
    }

    @Override
      protected void onPreExecute() {
       // TODO Auto-generated method stub

      }

    @Override
    protected String doInBackground(Integer... params) {
        Database dptr = new Database(MainClass.this);
        dptr.openToRead();
        tempString = dptr.getStringFromDatabase(params[0]);
        dptr.close();

        return tempString;

      }

} // end DoItAsyncTask

 } // end MainClass
4

1 回答 1

0

试试这种方式,通过ObjectInteger不是String

new DoItAsyncTask().execute(97, takeInString);

private class HeavyTask extends AsyncTask<Object, Void, Void> {

private mLocalStrong = "";

@Override
protected String doInBackground(Object... params) {
   mLocalInt = (Integer)params[0];       
   mLocalStrong = (String)params[1];

    return null;
  }
于 2013-08-03T07:10:07.480 回答