有时,当我使用finish()方法关闭特定活动时,我收到错误:
AndroidRuntimeException “Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag”
这似乎只有在我启动后快速关闭活动(通过单击后退按钮)时才会发生。然而,这并不是一直发生的。简而言之,这是活动层次结构:
MainActivity-> ListViewActivity-> ItemViewActivity
从ItemView返回时(定期)发生错误。
为了描述完整的链,我在MainActivity中有一个按钮,按下它时会调用listCLick
public void listClick(View view) {
Intent myIntent = new Intent(this, ListViewActivity.class);
startActivityForResult(myIntent, 0);
}
然后,当单击列表视图中的项目时,它会调用覆盖的onItemClick方法
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
Intent itemintent = new Intent(this, ItemViewActivity.class);
startActivity(itemintent);
}
我在ItemViewActivity中使用TextView(带有图像和文本),用户可以点击该TextView返回上一个活动。
TextView tempView;
// close this activity if someone clicks the waypoint's icon.
tempView = (TextView) findViewById(R.id.textview);
tempView.setText("Back");
tempView.setOnClickListener(backListener);
其中backListener定义为:
private OnClickListener backListener = new View.OnClickListener() {
public void onClick(View v) {
finish();
}
};
所以当我自己实际调用startActivity()时,我从未得到错误,只有当我从一个活动返回时。这是堆栈跟踪:
Uncaught handler: thread main exiting due to uncaught exception
android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
at android.app.ApplicationContext.startActivity(ApplicationContext.java:550)
at android.content.ContextWrapper.startActivity(ContextWrapper.java:248)
at android.webkit.CallbackProxy.uiOverrideUrlLoading(CallbackProxy.java:205)
at android.webkit.CallbackProxy.handleMessage(CallbackProxy.java:304)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4363)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
at dalvik.system.NativeStart.main(Native Method)
任何帮助都将不胜感激。
答案 0 :(得分:0)
将覆盖方法onDestroy();
添加到您的活动中,该活动遇到上述问题并在其中调用super.onDestroy();
方法,在这种情况下,当您按下后退按钮进入您刚开始的活动时,它将完成维持其生命周期,只需执行以下操作:
@Override
public void onDestroy(){
super.onDestroy();
}
希望这个帮助