用意图改变活动不起作用

时间:2015-01-04 15:50:34

标签: android android-intent android-activity

它应该有效,但事实并非如此。我有一些活动的应用程序。在示例活动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崩溃。

2 个答案:

答案 0 :(得分:1)

不要这样做,而是尝试这样做:

public void goToA(View view) {
    Intent intent = new Intent(this, AActvity.class);
    intent.setFlag(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(intent);
}

您可以阅读标记herehere的内容,但是一旦您更改了活动,它就会删除正在运行的额外实例。

但是,如果您获得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();
}

你将拥有更少的空间。