Eug*_*gun 21 android android-asynctask android-activity
我有一个AsyncTask,它用来自Internet的解析数据填充自定义List.
在PostExecute中,我填写该List并准备将其转移到新的Activity.
我是这样做的:
@Override
protected void onPostExecute(List<VideoDataDescription> result)
{
super.onPostExecute(result);
MainActivity.progressDialog.dismiss();
context.startActivity(new Intent(context, ResultsQueryActivity.class));
}
Run Code Online (Sandbox Code Playgroud)
在哪里
private Context context;
Run Code Online (Sandbox Code Playgroud)
在执行此代码后的LogCat中,我得到了一个Java.lang.NullPointerException.像我这样开始一个活动是否可行和正确?
UPD 我补充说
private Context mContext;
public YoutubeAndYahooParser(Context context)
{
super();
this.mContext = context;
}
Run Code Online (Sandbox Code Playgroud)
初始化上下文和调用
YoutubeAndYahooParser youtubeAndYahooParser = new YoutubeAndYahooParser(ResultsQueryActivity.this);
youtubeAndYahooParser.execute("my string to pass in asynctak");
Run Code Online (Sandbox Code Playgroud)
在PostExecute之后
Intent intent = new Intent(mContext, ResultsQueryActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mContext.startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
我添加了新的标志因为我在LogCat中有下一个:
*从Activity上下文外部调用startActivity()需要FLAG_ACTIVITY_NEW_TASK标志.这真的是你想要的吗?*
我对吗?
dha*_*g23 43
您应该传入应用程序上下文而不是本地活动的上下文.即使用context.getApplicationContext()并将其保存在AsyncTask子类的局部变量中.
代码可能看起来像这样:
public class MyAsyncTask extends AsyncTask {
Context context;
private MyAsyncTask(Context context) {
this.context = context.getApplicationContext();
}
@Override
protected Object doInBackground(Object... params) {
...
}
@Override
protected void onPostExecute(List<VideoDataDescription> result) {
super.onPostExecute(result);
MainActivity.progressDialog.dismiss();
context.startActivity(new Intent(context, ResultsQueryActivity.class));
}
}
Run Code Online (Sandbox Code Playgroud)
你会这样称呼它:
new MyAsyncTask(context).execute();
Run Code Online (Sandbox Code Playgroud)
小智 18
我刚试过这个...它在PostExecute方法中有效!!!
Intent intent_name = new Intent();
intent_name.setClass(getApplicationContext(),DestinationClassName.class);
startActivity(intent_name);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
35068 次 |
| 最近记录: |