programing

이전 활동으로 돌아가는 것을 방지하는 방법은 무엇입니까?

codeshow 2023. 8. 5. 11:08
반응형

이전 활동으로 돌아가는 것을 방지하는 방법은 무엇입니까?

전화기에서 뒤로 단추를 누르면 특정 작업이 이전 작업으로 되돌아가지 않도록 합니다.

가입 둘 다 , 로인및화있습다니면이다록니시등합작둘활동라는 새로운 합니다.HomeScreen성공적인 로그인/가입이 발생한 경우.홈 스크린이 시작되면 사용자가 뒤로 키를 눌러 로그인 또는 등록 화면으로 돌아갈 수 없도록 합니다.

사용해 보았습니다.Intent.FLAG_ACTIVITY_NO_HISTORY하지만 앱에 페이스북 통합 기능이 있기 때문에 'Facebook 로그인'을 사용하면 Facebook이 초기 로그인 화면으로 돌아와야 하므로 이러한 활동 기록을 보관해야 합니다.

나는 뒤로 버튼의 동작을 무시하는 것에 대해 생각했습니다.HomeScreen 때 했습니다.

@Override
public void onBackPressed() {
    finish();
}

하지만 그것 또한 효과가 없습니다.

제 제안은 사용자들이 돌아가지 않기를 바라는 활동을 끝내는 것입니다.예를 들어, 로그인 활동에서 전화를 건 직후startActivity, 전화 걸기finish()사용자가 뒤로 버튼을 누르면 로그인 작업이 스택에서 삭제되어 로그인 작업으로 이동할 수 없습니다.

다음 솔루션은 일반적인 로그인/기본 작업 시나리오 또는 차단 화면 구현에서 매우 유용할 수 있습니다.

이전 활동으로 돌아가지 않고 앱을 최소화하기 위해 재정의할 수 있습니다.onBackPressed()다음과 같이:

@Override
public void onBackPressed() {
    moveTaskToBack(true);
}

moveTaskToBack(boolean nonRoot)백업 스택을 그대로 유지하고 작업(모든 활동)을 백그라운드에 배치합니다.사용자가 홈 버튼을 누른 것과 같습니다.

매 수boolean nonRoot거짓일 경우 활동이 작업의 루트일 경우에만 작동하고, 참일 경우에는 작업의 모든 활동에 대해 작동합니다.

당신이 원하는 것이 정확히 무엇인지는 모르겠지만, 그것은 가능해야 할 것처럼 들리고, 또한 당신이 이미 올바른 방향으로 가고 있는 것처럼 들립니다.

다음은 도움이 될 수 있는 몇 가지 링크입니다.

Android에서 뒤로 단추 사용 안 함

  MyActivity.java =>
    @Override
    public void onBackPressed() {

       return;
    }

어떤 활동으로 '돌아가기'를 비활성화하려면 어떻게 해야 합니까?

  AndroidManifest.xml =>
<activity android:name=".SplashActivity" android:noHistory="true"/>

두 가지 해결책이 있습니다. 활동 A가 활동 B를 시작하지만 활동 B의 활동 A로 돌아가고 싶지는 않습니다.

백스택에서 이전 활동 A를 제거했습니다.

    Intent intent = new Intent(activityA.this, activityB.class);
    startActivity(intent);
    finish(); // Destroy activity A and not exist in Back stack

활동 B에서 뒤로 가기 단추 동작을 사용할 수 없습니다.

Go back 이벤트를 방지하는 방법은 아래와 같이 두 가지가 있습니다.

권장 접근 방식

@Override
public void onBackPressed() {
}

2)KeyDown 방법에 대한 재정의

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

그것이 유용하기를 바라지만, 여전히 당신의 상황에 달려있습니다.

이미 많은 훌륭한 해결책들이 제시되어 있기 때문에, 저는 좀 더 알기 쉽게 설명하려고 노력합니다.

이전 활동으로 돌아가는 것을 건너뛸 수 있는 방법은 무엇입니까?

백스택에서 이전 활동을 제거합니다.간단하죠.

백스택에서 이전 활동을 제거하는 방법은 무엇입니까?

finish()방법

정상 흐름:

enter image description here
모든 활동은 백스택이라고 하는 스택에 저장됩니다.
새로운 할 때.startActivity(...)그러면 새 활동이 스택의 맨 위로 푸시되고 뒤로 버튼을 누르면 활동이 스택에서 팝업됩니다.
한 가지 주목할 점은 뒤로 버튼을 눌렀을 때finish();메서드를 내부적으로 호출합니다.이것은 onBackPressed() 메서드의 기본 동작입니다.

B 활동을 건너뛰고 싶다면요?

iE A <--- C

그냥추를 추가하세요.finish();의 신다의 에 있는 .startActvity(...) B활동 B서에에서.

Intent i = new Intent(this, C.class);
startActivity(i);
finish();

enter image description here

finish()전체 응용프로그램이 아닌 현재 활동을 닫을 수 있는 방법을 제공합니다.그리고 애플리케이션을 제거하는 방법을 찾으려 하지 않는 것이 좋습니다.작은 조언.

의 접속을 시도해 보셨습니까?Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS | Intent.FLAG_ACTIVITY_NO_HISTORY이 플래그를 사용하는 것을 기억하십시오.Intent활동 시작!

다놓을 .finish() 바로

Intent i = new Intent(Summary1.this,MainActivity.class);
            startActivity(i);
finish();

프로그램의 모든 활동으로 돌아가기 싫다면,

android:launchMode="singleTask"

여기서 자세히 알아보기: http://developer.android.com/guide/topics/manifest/activity-element.html

입니다. paulsm4의 정답입니다.안에 있는 경우onBackPressed()그냥 돌아가시면 뒤로 버튼이 비활성화됩니다.그러나 사용 사례를 고려할 때 더 나은 접근 방식은 활동 논리를 뒤집는 것입니다. 즉, 가정 활동을 주요 활동으로 하고, 사용자가 거기에 로그인했는지 확인하고, 그렇지 않으면 로그인 활동을 시작하는 것입니다.그 이유는 만약 당신이 당신의 주요 활동에서 뒤로 버튼을 재지정한다면, 대부분의 사용자들은 그들이 뒤로 누르고 당신의 앱이 아무것도 하지 않을 때 혼란스러울 것이기 때문입니다.

이 방법은 잘 작동합니다.

Intent intent = new Intent(Profile.this, MainActivity.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent);
@Override
public void onBackPressed() {
}

를 할 때onBackPressed()제거하기만 하면 됩니다.super.onBackPressed();그리고 그것은 효과가 있을 것입니다.

onKeyDown 메서드를 재정의하고 뒤로 버튼을 눌렀는지 확인하기만 하면 됩니다.

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) 
{
    if (keyCode == KeyEvent.KEYCODE_BACK) 
    {
        //Back buttons was pressed, do whatever logic you want
    }

    return false;
}

놓다

finish();

활동 직후활동 중지를 시작하여 활동으로 되돌아가지 않도록 합니다.그 다음 추가

onCreate(){
    getActionBar().setDisplayHomeAsUpEnabled(false);
    ...
}

시작하는 활동으로 이동합니다.

Android Manifest.xml

 <activity 
      android:name=".welcome.SplashActivity"
      android:noHistory="true" // just add this line
      android:exported="true">  

 </activity>

언급URL : https://stackoverflow.com/questions/8631095/how-to-prevent-going-back-to-the-previous-activity

반응형