문제

사용자가 지속적으로 반복되는 3 가지 활동이 있습니다. 사용자가 메인 화면으로 돌아 오면 이전 히스토리를 종료하여 사용자가 뒤로 버튼을 누르고 화면 #2에 끝날 수 없으므로 그런 일을하는 좋은 방법은 무엇입니까? BTW- 1.6 (API 레벨 4)을 사용하고 있습니다.

반복하기 위해 - 나는 원래보기로 이어지는 길을 모르거나 예측한다고 말합니다. 그러나 일단 내가 그것을로드하면, 나는 사용자를 그 관점으로 이끌었던 역사를 지우고 싶다. 2.0에서는 덮어 쓰기 활동#Onbackpressed가 가능하지만 1.6에서 그런 것이 필요합니다.

도움이 되었습니까?

해결책

좋아, 나는 당신이 3 가지 활동, A, B 및 C가 있다고 가정합니다. A는 메인 화면이며 사용자는이 3 페이지를 통해 루프됩니다. 그러나 사용자가 A를 입력하면 OnbackPresed 이벤트를 종료로 수행해야합니다. 명확하게 만들까요?

이러한 상황에서 B 또는 C에서 A를 시작하려고 할 때 의도에 의도를 추가 할 수 있습니다. 그러면 의도에 히스토리 스택이 지워지고 스택에 A 만있을 수 있습니다.

백 키 이벤트를 가로 채려면 onbackpressed ()를 무시할 필요가 없습니다. 우리는이 방법을 사용할 수 있기 전에 항상 onkeydown을 사용합니다.

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {

    }
    return super.onKeyDown(keyCode, event);
}

다른 팁

활동에 대한 명확한 역사를 원한다면 두 가지 방법으로 할 수 있습니다.

(1). manifest.xml 파일에서

AndroidManifest.xml 파일에서이를 구현할 수도 있습니다. 안드로이드 : nohistory = "true" 당신이 원하는 사람들의 속성

예시

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.rdc.activity"
      android:versionCode="1"
      android:versionName="1.0">
    <uses-sdk android:minSdkVersion="xx" />

    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".PickGalleryImageActivity"
                  android:label="@string/app_name"
                  android:noHistory="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
</manifest>

(2). 자바 코드로

활동을 시작할 때이 플래그를 추가 할 수 있습니다 intent.flag_activity_no_history

예시

Intent intent = new Intent(this, SomeOtherClass.class);

// do not keep this intent in history
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);

startActivity(intent);

그리고 다른 하나는 당신이 아래의 뒤로 버튼을 찾으려고한다면 예를 들어 도와 드릴 수 있습니다.

안드로이드를 찾고 있다면 API 레벨 최대 1.6.

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
     if (keyCode == KeyEvent.KEYCODE_BACK) {
     //todo here
     return true;
     }
     return super.onKeyDown(keyCode, event);    
}

그것이 당신을 도울 수 있기를 바랍니다 !!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top