
更新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方法)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)