2012-02-28 4 views
0

그래서, 나는 4 개 가지 활동이 응용 프로그램이 있습니다백 버튼을 사용하려면 백 스택을 어떻게 사용해야합니까?

  • A가 B, C 및 D를 시작하는 세 개의 버튼과 주요 활동입니다 (나는 사람들이 하위 활동으로 다음을 참조하는 데 사용할 생각한다).
  • 각 활동에는 자체 레이아웃이 있지만 여기서는 과 관련이 없다고 생각합니다.

내가 원하는 것은 대부분의 앱에 대한 표준 동작입니다. 즉 :

  1. 나는 그럼 난 예를 들어, 버튼, C를 눌러 및 활동 C가 표시됩니다 활동 A.
  2. 을 응용 프로그램을 실행하고보고에 의해 시작합니다.
  3. 그런 다음 뒤로 버튼을 누르면 활동 A가 다시 표시됩니다.

내 앱은 1 점과 2 점을 올바르게 나타내지 만 3 점에서는 앱이 사라집니다. 활동의

startActivity(new Intent(this,C.class)); 

없음이 onBackPressed 메소드를 오버라이드 (override)하지 : 버튼의

온 클릭 방법은 다음과 같이 있습니다. 버튼의 OnClick 메서드가 호출 된 후, 그 A.onDestroy()가 호출 내가했던 디버깅 작업에서

<activity android:name=".A" android:label="A" android:launchMode="standard" android:theme="@android:style/Theme.NoTitleBar" android:screenOrientation="portrait"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN"/> 
     <category android:name="android.intent.category.LAUNCHER"/> 
    </intent-filter> 
</activity> 

<activity android:name=".B" android:label="B" android:launchMode="standard" android:theme="@android:style/Theme.NoTitleBar" android:screenOrientation="portrait"/> 
<activity android:name=".C" android:label="C" android:launchMode="standard" android:theme="@android:style/Theme.NoTitleBar" android:screenOrientation="portrait"/> 
<activity android:name=".D" android:label="D" android:launchMode="standard" android:theme="@android:style/Theme.NoTitleBar" android:screenOrientation="portrait"/> 

내가 아는 :

여기에 (의 일부) 내 매니페스트 파일입니다. 이 정보를 바탕으로, 나는 물론 잘못된 것일 수 있습니다. 어떤 이유로 활동 A가 기록 스택에서 제거됩니다.

이제는 이런 종류의 문제가 이미 stackoverflow에서 해결되었음을 알고 있지만 찾을 수있는 제안은 모두 시도했지만 아무 것도 작동하지 않았습니다. 나는 내 자신의 경우를 설명하고 싶었다.

+0

A.onDestroy()가 호출 된 경우 A를 수동으로 호출하는 경우를 제외하고는 활동 스택에서 A를 다시 가져올 방법이 없습니다. 그러나 스택의 올바른 위치에 있지는 않습니다. onPause()에서 무엇을합니까? 그걸 무시 했니? – stefan

+0

A 액티비티가 스택에 있어야합니다. 새로운 활동을 시작할 때 finish()를 사용합니까? 이것을 많이 사용했는데 매니페스트에서 noHistory 속성을 설정하는 것이 유일한 방법이었습니다. 나는 결코 android : launchMode = "standard"를 사용하지 않았지만, 이렇게 보지 못했습니다. – colegu

+0

@stefan onPause를 덮어 쓰지 않습니다. onResume (레이아웃을 부 풀리는 부분)을 재정의합니다. 당신이 말한대로 수동으로 전화를 걸어서 작동 시키지만, 우아함과 가까운 곳은 아닙니다 ... –

답변

0

물론 뭔가 잘못하고 있어야합니다.

onWindowFocusChanged 메서드를 재정의하고 거기에서 작업을 파괴하므로 물론 스택에서 제거되고있었습니다.

@stefan 및 @colegu 시간을 낭비해서 죄송합니다.