0

onPostExecute メソッドで値を返す AsyncTask があり、その戻り値を取得する方法を知っている唯一の方法は、クラスのグローバル メンバー変数を使用し、その値を 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

この方法を試して、Object代わりに渡すIntegerか、次のようにし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 に答える