在ASyncTask中的startActivity()之后访问视图组件

时间:2012-09-18 07:01:46

标签: android android-intent android-asynctask

我有一个AsyncTask,它从服务器检索数据,然后需要启动一个新的Activity来显示数据。

在ASync onPostExecute中执行此操作...(但不启动新活动)

setContentView(R.layout.activity_list);
TextView textListDate = ((TextView)findViewById(R.id.textListDate));
textListDate.setText(FormatUtilities.formatDateLong(list.getDateFor()));

这样做会导致空指针异常(由于TextListDate为空

Intent in = new Intent(super.getAppContext(), List.class);
in.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
super.getAppContext().startActivity(in);
TextView textListDate = ((TextView)findViewById(R.id.textListDate));
textListDate.setText(FormatUtilities.formatDateLong(list.getDateFor()));

并且执行此操作会导致屏幕加载我想要的内容,然后几乎立即被删除...

Intent in = new Intent(super.getAppContext(), List.class);
in.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
super.getAppContext().startActivity(in);
setContentView(R.layout.activity_list);
TextView textListDate = ((TextView)findViewById(R.id.textListDate));
textListDate.setText(FormatUtilities.formatDateLong(list.getDateFor()));

对我遗失的任何建议?我认为这与findViewById试图访问“当前”活动的视图而不是新视图有关...

我是否需要将我的数据传递给新的Activity并在下一个活动中执行findViewById?

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

1) - 您应该将数据保存在ArrayList中或根据服务器的响应,并将该数据与键,值配对,然后在下一个Activity中检索该意图。 2) - 现在您可以在所需的位置显示该数据,例如Listview,Text view等。

感谢