2011-03-23 2 views
1

내 앱에는 A, B, C의 세 가지 활동이 있습니다. A부터 B까지 OK 버튼을 통해 이동 중이며 Android 기기의 기본 뒤로 버튼을 사용하여 B에서 A로 되돌아 가고 싶습니다. 버튼을 누르면 앱이 닫힙니다. 이 문제를 어떻게 해결할 수 있습니까?앱을 닫지 않고 Android back button을 사용하여 내 앱으로 돌아갈 수있는 방법은 무엇입니까?

+2

실행 된 코드를 표시 한 다음 버튼을 클릭하십시오. 어떻게 A에서 B를 시작하는거야? 대답이 조용히 downvoting하는 것을 도와주지 않으면 – Olegas

+5

. 제발 코멘트. –

답변

8

나는 당신이 OK 버튼 onclick 수신기에서 finish()로 전화를했다고 의심합니다. 그러지 마. finish()은 활동 스택에서 활동을 제거합니다.

자세히 알아보기 here.

+0

이것이 정답이라는 것은 거의 확실합니다. – NickT

1

당신이 때 확인 버튼 R U 같은 ... 의도를 시작 = 새로운 의도

의도 INT (문맥, B.class); startActivity (int);

그런 다음 백 버튼을 처리하지 않는 경우.

다시 사용 기본 버튼 ... 는 것이다 다시

는 희망이 도움이 A로 가면 ...

+0

문제가 지속되면 ... 여기에 코드를 게시하십시오. – Udaykiran

+0

다음 줄을 사용하여 내 주 클래스에서 이동합니다. myIntent = new Intent (view.getContext(), Add.class); \t startActivityForResult (myIntent, 0); –

+0

당신의 코드는'onActivityResult' 메서드에서 어떻게 생겼을까요? – binnyb

2

왜 결과에 대한 활동을 시작?

private static final int NONE = -1; 

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 

    if (keyCode == KeyEvent.KEYCODE_BACK) { 

    setResult(NONE, intent); 
     finish(); 
    return super.onKeyDown(keyCode, event); 
} 
+1

뒤로 단추를 누를 때 결과가 반환되지 않는다고 말하는 것은 잘못되었습니다. 반환 된 결과는 0과 같습니다 RESULT_CANCELED입니다. – NickT

+0

오, 이걸 몰랐는데, 제 앱이 케이스 0을 처리하지 못했다고 생각했습니다. 정밀도에 감사드립니다! – olamotte

0

에서 같은 backpress을 처리 할 수 ​​있습니다 ... 당신이 BACK 버튼을 누르면, 결과는 B의 활동을 형성 RESULT_CANCELED로 설정되어 있으므로이 같은 ResultCode을 처리하지 않는 경우 충돌

Intent intent = new Intent(context, SecondActivity.class); 
context.startActivityForResult(intent, SecondActivity.SECONDACTIVITY_REQUEST); 

내가 가지고 매니페스트에서 :

<activity android:name=".SecondActivity" android:screenOrientation="landscape" android:launchMode="standard"></activity> 
(주요 활동에) 내 온 클릭 방법은 내가 코드를 사용

내가 볼 수있는 다른 설정없이이 기능이 작동합니다. 어떤 사건에 반응하고 있습니까? 당신은 또한 다음과 같은 코드에서 활동을 돌아갈 수

참고 :

super.setResult(Activity.RESULT_OK); 
super.finish(); 

편집 ... 당신이 메인 Activitys에 onKeyDown 이벤트에 이벤트를 삼키는하지 않을 있는지 확인합니다.

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    //your code here 
    //if (keyCode == 
    //... 
    //else 
    return super.onKeyDown(keyCode, event); 
} 
관련 문제