2015-01-04 2 views
0

Он должен работать, но это не так. У меня есть приложение с некоторыми действиями. В примере деятельности А и В. Заказ А -> (некоторые операции) -> 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().

EDIT: Одна вещь, которую я забыл: начало нового действия работает «вперёд», поэтому из A-> B. Из B-> A он падает.

+0

опубликуйте вид (или кнопку), который вы нажмете, чтобы начать работу. Я имею в виду xml – Elltz

+0

Это обычная кнопка с android: onClick = "goToA"/"goToB" в этом случае. – Charliee

+2

Ваш комментарий и сообщение об ошибке не имеют отношения друг к другу. –

ответ

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.

+0

Это работает еще хуже. Есть все те же ошибки, и теперь работает кнопка «назад» (я не хочу, чтобы она работала [конечно, я всегда могу переопределить ее и написать пустой метод]). – Charliee

+0

@Charliee у вас есть другие проблемы в вашем коде, тогда они не связаны с «финишем». –

+0

Ну, спасибо. Я попытаюсь как-то это понять. – Charliee

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(); 
} 

В стеке у вас будет меньше места.

Смежные вопросы