응용 프로그램을 로그 아웃하는 동안 안드로이드에서 뒤로 버튼을 비활성화하는 방법은 무엇입니까?
응용 프로그램을 로그 아웃하는 동안 안드로이드에서 뒤로 버튼을 비활성화하는 방법은 무엇입니까?
답변:
onBackPressed 메소드를 대체하고 디바이스의 뒤로 단추를 처리하려는 경우 아무 것도 수행하지 마십시오.
@Override
public void onBackPressed() {
if (shouldAllowBack()) {
super.onBackPressed();
} else {
doSomething();
}
}
더 높은 API 레벨 2.0 이상을 찾고 있다면 이것이 효과적입니다.
@Override
public void onBackPressed() {
// Do Here what ever you want do on back press;
}
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);
}
뒤로 버튼을 누르지 않도록 활동에 위의 코드를 작성하십시오.
이 간단한 방법으로 super.onBackPressed ()를 호출하지 마십시오.
@Override
public void onBackPressed() {
// super.onBackPressed();
// Not calling **super**, disables back button in current screen.
}
사용하고 있습니다 ........
@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
...
}
위의 답변 에서이 두 가지 방법을 분리하십시오.
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);
}