[android] 활동에서 뒤로 버튼을 처리하는 방법
활동에서 뒤로 버튼을 처리하는 방법은 무엇입니까? 버튼이 몇 개 있습니다. 버튼 중 하나를 클릭하면 필요한 버튼으로 리디렉션됩니다. 제대로 작동하지만 뒤로 버튼을 누르면 완료됩니다.
이 문제를 해결하는 방법. 모든 버튼에 대해 하나의 활동 만 있습니다. 미리 감사드립니다.
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if ((keyCode == KeyEvent.KEYCODE_BACK))
{
return false; //I have tried here true also
}
return super.onKeyDown(keyCode, event);
}
위의 코드를 사용하여 뒤로 버튼을 처리했지만 작동하지 않습니다. 뒤로 버튼을 누르면 그 자체가 충격을 받았습니다.
답변
다음과 같이 처리 할 수 있습니다.
API 레벨 5 이상
@Override
public void onBackPressed() {
// your code.
}
API 5 이전
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
// your code
return true;
}
return super.onKeyDown(keyCode, event);
}
답변
위의 것 외에도 개인적으로 권장합니다
onKeyUp():
, 프로그램 말하기 사용자가 처음에 키를 눌렀을 때 실행됩니다를 keyDown 하지만, 그것은 것입니다 사용자가 우울 키를 유지하면서 반복합니다. *
이것은 모든 개발 플랫폼에 적용됩니다.
Google 개발팀은 뷰에서 BACK 버튼을 가로채는 경우 keydown에서 starttracking으로 KeyEvent를 추적 한 다음 keyup으로 호출해야한다고 제안했습니다.
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK
&& event.getRepeatCount() == 0) {
event.startTracking();
return true;
}
return super.onKeyDown(keyCode, event);
}
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.isTracking()
&& !event.isCanceled()) {
// *** Your Code ***
return true;
}
return super.onKeyUp(keyCode, event);
}
답변
하드웨어 장치 뒤로 버튼과 소프트 홈 (뒤로) 버튼 (예 : “<-“모두에 대해 이것이 나에게 도움이되는 것입니다. (*주의 활동에 앱 바 / 툴바가 있습니다)
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
//finish();
onBackPressed();
break;
}
return true;
}
@Override
public void onBackPressed() {
//Execute your code here
finish();
}
건배!
답변
가장 간단한 방법은 뒤로 버튼 누름을 캡처하고 다음과 같이 moveTaskToBack (true)를 호출하는 것입니다.
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
moveTaskToBack(true);
return true;
}
return super.onKeyDown(keyCode, event);
}
Android 2.0에는 새로운 onBackPressed 메소드가 도입되었으며 Back 버튼을 처리하는 방법에 대한 권장 사항
답변
다음을 사용해야합니다.
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.ECLAIR
&& keyCode == KeyEvent.KEYCODE_BACK
&& event.getRepeatCount() == 0) {
// Take care of calling this method on earlier versions of
// the platform where it doesn't exist.
onBackPressed();
}
return super.onKeyDown(keyCode, event);
}
@Override
public void onBackPressed() {
// This will be called either automatically for you on 2.0
// or later, or by the code above on earlier versions of the
// platform.
return;
}
여기에 정의 된대로 : http://android-developers.blogspot.com/2009/12/back-and-other-hard-keys-three-stories.html
이전 버전을 사용하여 코드를 컴파일하는 경우 android.os.Build.VERSION_CODES.ECLAIR를 5로 바꾸십시오 (예를 들어 ECLAIR라는 개인 int를 추가 할 수 있음)
답변
이것은 나를 도왔다 ..
@Override
public void onBackPressed() {
startActivity(new Intent(currentActivity.this, LastActivity.class));
finish();
}
또는????? 서랍 토글에도 사용할 수 있습니다.
@Override
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
startActivity(new Intent(currentActivity.this, LastActivity.class));
finish();
}
나는 이것이 당신을 도울 수 있기를 바랍니다 .. 🙂
답변
이것은 무언가를하는 간단한 방법입니다.
@Override
public void onBackPressed() {
// do what you want to do when the "back" button is pressed.
startActivity(new Intent(Activity.this, MainActivity.class));
finish();
}
나는 그것에 대해 더 정교한 방법이있을 것이라고 생각하지만 단순함을 좋아합니다. 예를 들어, 위의 템플릿을 사용하여 사용자가 응용 프로그램에서 로그 아웃하고 선택한 다른 활동으로 돌아갑니다.