programing tip

Android 재정의 onBackPressed ()

itbloger 2020. 12. 28. 07:52
반응형

Android 재정의 onBackPressed ()


onBackPressed()하나의 활동 만 재정의 할 수 있습니까?

뒤로 버튼을 클릭하면 특정 활동에 대한 대화 상자를 호출하고 싶지만 다른 모든 활동에서는 이전에 작동했던 것처럼 작동하기를 원합니다 (이전 활동으로 이동).

편집 됨

답변 해주신 모든 분들께 감사 드리며, 이미 말씀 해주신 내용을 모두 가지고 있었지만, 다른 활동에서 뒤로 버튼을 클릭 할 때 이전 활동 (뒤로 버튼을 재정의 한 활동)으로 이동하는 것이 문제였습니다. 작동하지 않는다고 생각하고 onBackPressed()전체 응용 프로그램에서 재정의한다고 생각했지만 이제 얻었습니다.


예. 단 하나의 재정의 Activity

@Override
public void onBackPressed()
{
     // code here to show dialog
     super.onBackPressed();  // optional depending on your needs
}

이 코드를 다른 곳에 넣지 마십시오 Activity


onBackPressed()codeMagic의 예제에 따라 메서드를 재정의하고 super.onBackPressed();기본 작업 (현재 활동 완료)을 실행하지 않으려면 호출을 제거합니다 .


onBackPressed ()를 호출 할 수 있으며 뒤로 버튼 뒤에 일부 활동을 표시하려면

Intent intent = new Intent(ResetPinActivity.this, MenuActivity.class);
    startActivity(intent);
    finish();

그것은 나를 위해 일했습니다.


onBackPressed()대화 상자를 표시하려는 활동 에서 메서드를 호출하면 그 안에 대화 상자가 표시됩니다.


필드 초기화와 함께 다음 코드를 사용하십시오.

private int count = 0;
    @Override
public void onBackPressed() {
    count++;
    if (count >=1) {
        /* If count is greater than 1 ,you can either move to the next 
        activity or just quit. */
        Intent intent = new Intent(this, SecondActivity.class);
        startActivity(intent);
        finish();
        overridePendingTransition
        (R.anim.push_left_in, R.anim.push_left_out);
        /* Quitting */
        finishAffinity();
    } else {
        Toast.makeText(this, "Press back again to Leave!", Toast.LENGTH_SHORT).show();

        // resetting the counter in 2s
        Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                count = 0;
            }
        }, 2000);
    }
    super.onBackPressed();
}

음악을 제어하는 가장 좋은 가장 일반적인 방법은 무시하는 어머니 활동 작성하는 것입니다 startActivity(Intent intent)- 당신이 넣어 그것에을 shouldPlay=true하고 onBackPressed()- 그것은 당신이 넣어 shouldPlay = true. onStop-shouldPlay를 조건으로 조건부 mediaPlayer.stop을 넣습니다.

Then, just extend the mother activity to all other activities, and no code duplicating is needed.


At first you must consider that if your activity which I called A extends another activity (B) and in both of

them you want to use onbackpressed function then every code you have in B runs in A too. So if you want to separate these you should separate them. It means that A should not extend B , then you can have onbackpressed separately for each of them.


Try This Its working

  @Override
public void onBackPressed(){
        super.onBackPressed();
         Intent i=new Intent(Intent.ACTION_MAIN);
        i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        finish();
}

ReferenceURL : https://stackoverflow.com/questions/18337536/android-overriding-onbackpressed

반응형