2015-01-04 2 views
0

작동해야하지만 그렇지는 않습니다. 나는 몇몇 활동을 가진 신청이있다. > (일부 동작) - -> B -> (일부 동작) - 예에서 활동 A와 B 주문은입니다>은 ... 나는 이런 식으로 새로운 활동을 시작합니다의도와 함께 활동 변경이 작동하지 않습니다.

//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에서 여기에 몇 가지 해답을 확인했지만 그들은 여기에 도움이되지 않습니다.

로그 캣는 말한다 :

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

이 경우 정상적인 버튼이며, onClick : 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); 
} 

당신은 플래그가 herehere 무엇에 대해 읽을 수 있지만 당신이 변경하면 실행하는 별도의 인스턴스를 제거합니다 활동.

그러나 OutOfBounds를 받고 있다면 다른 문제가 있음을 언급 할 것입니다.

+0

이것은 더 악화됩니다. 여전히 동일한 오류가 있으며 '뒤로'버튼이 작동합니다 (나는 그것을 작동시키지 않습니다. 물론 항상 무시하고 빈 방법을 쓸 수 있습니다). – Charliee

+0

@Charliee 코드에서 "finish"와 관련이없는 다른 문제가 있습니다. –

+0

글쎄, 고마워. 나는 그것을 어떻게 든 이해하려고 노력할 것이다. – Charliee

0

Intent으로 수행 할 수 있다고 가정하면 A 작업으로 돌아 가기 위해 finish();을 사용하는 것이 더 좋습니다.

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

스택의 공간이 줄어 듭니다.

관련 문제