它应该有效,但事实并非如此。我有一些活动的应用程序。在示例活动A和B.顺序是A - >(某些操作) - > B->(某些操作) - > A ... 我以这种方式开始新的活动:
//onClick method in A Activity
public void goToB(View view) {
Intent intent = new Intent(this,BActivity.class);
startActivity(intent);
finish();
}
//onClick method in B Activity
public void goToA(View view) {
Intent intent = new Intent(this,AActivity.class);
startActivity(intent);
finish();
}
我想完成之前的活动,所以这不是我的解决方案。我在这里检查了一些答案,在stackoverflow中但它们在这里没有帮助。
Logcat说:
java.lang.IllegalStateException: Could not execute method of the activity
at some places
Caused by: java.lang.reflect.InvocationTargetException
at some places
Caused by: java.lang.IndexOutOfBoundsException
at some places
有谁知道我做错了什么?我认为这很简单,但也许我误解了finish()或startActivity()方法。
编辑: 我忘了一件事:开始一项新活动“向前”,所以从A-> B开始。从B-> A崩溃。
答案 0 :(得分:1)
不要这样做,而是尝试这样做:
public void goToA(View view) {
Intent intent = new Intent(this, AActvity.class);
intent.setFlag(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
}
您可以阅读标记here和here的内容,但是一旦您更改了活动,它就会删除正在运行的额外实例。
但是,如果您获得OutOfBounds,我会提到您必须遇到其他问题。
答案 1 :(得分:0)
假设可以Intent
完成,最好使用finish();
返回A
活动;
//onClick method in A Activity
public void goToB(View view) {
Intent intent = new Intent(this,BActivity.class);
startActivity(intent);
}
//onClick method in B Activity
public void goToA() {
this.finish();
}
你将拥有更少的空间。