android-AsyncTask:将值传递给Activity(onCreate方法)

android-AsyncTask:将值传递给Activity(onCreate方法),第1张

概述更新1活动:publicInteger_number=0;@OverridepublicvoidonCreate(BundlesavedInstanceState){if(_number>0){Log.d("onSuccessfulExecute",""+_number);}else{Log.d(

更新1

活动:

public Integer _number = 0;@OverrIDe    public voID onCreate(Bundle savedInstanceState) {if (_number >0)        {            Log.d("onSuccessfulExecute", ""+_number);        }        else        {            Log.d("onSuccessfulExecute", "nope empty songs Lists");        }}public int onSuccessfulExecute(int numberOfSongList) {_number = numberOfSongList;if (numberOfSongList >0){    Log.d("onSuccessfulExecute", ""+numberOfSongList);}else{    Log.d("onSuccessfulExecute", "nope empty songs Lists");}    return numberOfSongList;}

结束Update1

更新:AsynchTask有自己的外部类.

如何将值从AsyncTask onPostExecute()…传递给活动

我的代码确实从onPostExecute()返回值并在UI上更新,但是我正在寻找一种方法来设置来自AsynchTask的活动变量(NumberOfSongList).

AsyncTask类:

@OverrIDe    public voID onPostExecute(asynctask.Payload payload)    {           AsyncTemplateActivity app = (AsyncTemplateActivity) payload.data[0];             //the below code DOES UPDATE the UI textVIEw control             int answer = ((Integer) payload.result).intValue();             app.taskStatus.setText("Success: answer = "+answer);            //PROBLEM:            //i am trying to populate the value to an variable but does not seems like the way i am            doing:            app.NumberOfSongList = payload.answer;            ..............            ..............    }

活动:

  public Integer NumberOfSongList;    public voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentVIEw(R.layout.main);         //Several UI Code           new ConnectingTask().execute();        Log.d("onCreate", ""+NumberOfSongList);    } 

解决方法:

使用setter方法怎么样?例如

private int _number;public int setNumber(int number) {    _number = number;}

更新:

请看这段代码.这将完成您要完成的任务.

活动课

public class TestActivity extends Activity {    public int Number;    @OverrIDe    protected voID onCreate(Bundle savedInstanceState) {        // Todo auto-generated method stub        super.onCreate(savedInstanceState);        setContentVIEw(R.layout.test);        button btndisplay = (button) findVIEwByID(R.ID.btndisplay);        btndisplay.setonClickListener(new OnClickListener() {            public voID onClick(VIEw v) {                Toast toast = Toast.makeText(v.getContext(), "Generated number: " + String.valueOf(Number), Toast.LENGTH_LONG);                toast.show();                           }        });        new TestTask(this).execute();    }}

AsyncTask类

public class TestTask extends AsyncTask<VoID, VoID, Integer> {    private final Context _context;    private final String TAG = "TestTask";    private final Random _rnd;    public TestTask(Context context){        _context = context;        _rnd = new Random();    }    @OverrIDe    protected voID onPreExecute() {        //Todo: Do task init.        super.onPreExecute();    }    @OverrIDe    protected Integer doInBackground(VoID... params) {        //Simulate a long-running procedure.        try {            Thread.sleep(3000);                 } catch (InterruptedException e) {            Log.e(TAG, e.getMessage());        }        return _rnd.nextInt();    }    @OverrIDe    protected voID onPostExecute(Integer result) {        TestActivity test = (TestActivity) _context;        test.Number = result;               super.onPostExecute(result);    }}
总结

以上是内存溢出为你收集整理的android-AsyncTask:将值传递给Activity(onCreate方法)全部内容,希望文章能够帮你解决android-AsyncTask:将值传递给Activity(onCreate方法)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1074426.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-26
下一篇2022-05-26

发表评论

登录后才能评论

评论列表(0条)

    保存