IT

안드로이드에서 뒤로 버튼 비활성화

lottoking 2020. 3. 8. 16:26
반응형

안드로이드에서 뒤로 버튼 비활성화


응용 프로그램을 로그 아웃하는 동안 안드로이드에서 뒤로 버튼을 비활성화하는 방법은 무엇입니까?


onBackPressed 메소드를 대체하고 디바이스의 뒤로 단추를 처리하려는 경우 아무 것도 수행하지 마십시오.

@Override
public void onBackPressed() {
   if (!shouldAllowBack()) {
       doSomething();
   } else {
       super.onBackPressed();
   }
}

1.6까지 안드로이드 API 레벨을 찾고 있다면.

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
     if (keyCode == KeyEvent.KEYCODE_BACK) {
     //preventing default implementation previous to android.os.Build.VERSION_CODES.ECLAIR
     return true;
     }
     return super.onKeyDown(keyCode, event);    
}

더 높은 API 레벨 2.0 이상을 찾으면 큰 효과가 있습니다.

@Override
public void onBackPressed() {
    // Do Here what ever you want do on back press;
}

뒤로 버튼을 누르지 않도록 활동 에이 코드를 작성하십시오.


이 간단한 방법으로 super.onBackPressed ()를 호출하지 마십시오.

참고 :-강력한 근거가 없을 때까지는하지 마십시오.

@Override
public void onBackPressed() {
// super.onBackPressed();
// Not calling **super**, disables back button in current screen.
}

onBackPressed () 메소드를 대체하십시오 .

@Override
public void onBackPressed() { }

사용하고 있습니다 .............

 @Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if(keyCode==KeyEvent.KEYCODE_BACK)
        Toast.makeText(getApplicationContext(), "back press",      
     Toast.LENGTH_LONG).show();

    return false;
       // Disable back button..............
}

활동이 종료되기 전에 안드로이드 클라이언트 응용 프로그램이 일부 서버에서 로그 아웃되도록하려면-> 자체 스레드에서 서비스로 로그 아웃하십시오 (어쨌든해야 할 일입니다).

뒤로 버튼을 비활성화해도 아무런 문제가 해결되지 않습니다. 예를 들어 사용자가 전화를받을 때에도 동일한 문제가 발생합니다. 전화를 받으면 네트워크에서 안정적인 응답을 받기 전에 활동이 종료 될 가능성이 높습니다.

그렇기 때문에 서비스가 자체 스레드에서 네트워크의 응답을 기다렸다가 성공하지 못하면 다시 시도 해야하는 이유입니다. 안드로이드 서비스는 응답을 받기 전에 죽일 가능성이 훨씬 적을뿐만 아니라 작업을 마치기 전에 실제로 죽을 경우 AlarmManager가 다시 시도하기 위해 항상 부활 할 수 있습니다.


onBackPressed () 메서드를 재정의하면 onBackPressed 메서드 또는 기타 클래스의 수퍼 클래스를 호출 할 필요가 없습니다.

@Override
public void onBackPressed()
{

}

또는 현재 활동을 onBackPressed () 메소드로 전달하십시오.

@Override
public void onBackPressed()
{
   startActivity(new Intent(this, myActivity.class));  
   finish();
}

필수 활동 이름을 myActivity로 바꾸십시오.

프래그먼트를 사용하는 경우 먼저 callParentMethod () 메소드를 호출하십시오.

public void callParentMethod(){
    context.onBackPressed(); // instead of context use getActivity or something related
}

그런 다음 빈 메소드를 호출하십시오.

@Override
public void onBackPressed()
{

}

당신이 사용하는 경우 FragmentActivity. 그런 다음 이렇게

먼저이 안에 전화하십시오 Fragment.

public void callParentMethod(){
    getActivity().onBackPressed();
}

그런 다음 onBackPressed부모 FragmentActivity클래스 옆에 메소드 를 호출 하십시오 .

@Override
public void onBackPressed() {
  //super.onBackPressed();
  //create a dialog to ask yes no question whether or not the user wants to exit
  ...
}

이 코드를 사용하는 것 : 만약 당신이 backpressed disable을 원한다면, super.OnBackPressed ();

@Override
public void onBackPressed() {

}

로그 아웃하는 동안 앱을 사용하지 않으려면 취소 할 수없는 대화 상자가 나타납니다.


onBackPressed()활동 에서 메소드를 대체하고 수퍼 클래스 호출을 제거 할 수 있습니다 .

@Override
public void onBackPressed() {
  //remove call to the super class
  //super.onBackPressed();
}

뒤로 버튼의 방법을 재정의하면됩니다. 뒤로 버튼을 누를 때 아무 일도 일어나지 않도록 원하는 경우 메소드를 비워 둘 수 있습니다. 아래 코드를 살펴보십시오.

@Override
public void onBackPressed() 
{
   // Your Code Here. Leave empty if you want nothing to happen on back press.
}

위의 답변 에서이 두 가지 방법을 분리하십시오.

onBackPressed () (API 레벨 5, Android 2.0)

onKeyDown () (API 레벨 1, 안드로이드 1.0)

또한 대체 할 수 있습니다 dispatchKeyEvent()(API 레벨 1, 안드로이드 1.0) , 같은

dispatchKeyEvent() (API 레벨 1, 안드로이드 1.0)

@Override
public boolean dispatchKeyEvent(KeyEvent event) {
    // TODO Auto-generated method stub
    if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
        return true;
    }
    return super.dispatchKeyEvent(event);
}

나를 위해 재정의 onBackPressed()는 효과가 없었지만 어떤 활동이 잘 시작되어야하는지 명시 적으로 지적했습니다.

@Override
public void onBackPressed(){
  Intent intent = new Intent(this, ActivityYouWanToGoBack.class);
  startActivity(intent);
}

이 시도:

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

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

super.onBackPressed()에서 제거하십시오 public void onBackPressed(). 그것은 안드로이드 9에서 테스트


안드로이드에서 다시 버튼을 비활성화

@Override
public void onBackPressed() {
    return;
}

참고 URL : https://stackoverflow.com/questions/4779954/disable-back-button-in-android



반응형