안드로이드 앱에서 간단한 것을하고 싶습니다. 이전 활동으로 돌아가는 방법은 무엇입니까?
이전 활동으로 돌아가려면 어떤 코드가 필요합니까
안드로이드 앱에서 간단한 것을하고 싶습니다. 이전 활동으로 돌아가는 방법은 무엇입니까?
이전 활동으로 돌아가려면 어떤 코드가 필요합니까
답변:
Android 활동은 활동 스택에 저장됩니다. 이전 활동으로 돌아가는 것은 두 가지를 의미 할 수 있습니다.
startActivityForResult를 사용 하여 다른 활동에서 새 활동을 열었습니다 . 이 경우 코드에서 finishActivity () 함수를 호출 하면 이전 액티비티로 돌아갑니다.
활동 스택을 추적하십시오. 당신이 의도로 새로운 활동을 시작할 때마다이 같은 의도 플래그를 지정할 수 있습니다 FLAG_ACTIVITY_REORDER_TO_FRONT
또는 FLAG_ACTIVITY_PREVIOUS_IS_TOP
. 이를 사용하여 애플리케이션의 활동을 섞습니다. 많이 사용하지는 않았습니다. http://developer.android.com/reference/android/content/Intent.html 에서 플래그를 살펴보십시오.
주석에서 언급했듯이 활동이 열린 경우으로 startActivity()
닫을 수 있습니다 finish()
. 위로 버튼을 사용 하려면 주석에 언급 된 것과 달리 onOptionsSelected(MenuItem item)
항목 ID를 확인하는 방법으로 해당 버튼을 잡을 수 있습니다 .android.R.id.home
R.id.home
시도하십시오 Activity#finish()
. 이것은 뒤로 버튼이 기본적으로 수행하는 작업입니다.
this.finish();
#
표시기입니다 finish()
. 유효한 Java는 아니지만 메소드 사용 방법을 설명하는 데 도움이됩니다.
.
과 같습니다.Activity.someStaticMethod()
딱 이것
super.onBackPressed();
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
이렇게하면 스택을 유지하고 스택에서 모든 활동을 지운 이전 활동으로 이동할 수 있습니다.
예를 들어, 스택이 A-> B-> C-> D이고이 플래그로 B를 시작하면 스택은 A-> B가됩니다.
뒤로 버튼 동작을 제어하고 싶습니까? 두 가지 방법 중 하나를 통해 뒤로 단추를 대체 (특정 활동으로 이동) 할 수 있습니다.
Android 1.6 이하의 경우 :
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
// do something on back.
return true;
}
return super.onKeyDown(keyCode, event);
}
또는 Android 2.0 이상 만 지원하는 경우 :
@Override
public void onBackPressed() {
// do something on back.
return;
}
자세한 내용은 http://android-developers.blogspot.com/2009/12/back-and-other-hard-keys-three-stories.html
현재 활동을 마치거나 onBackPressed로 돌아가려면이 메소드를 호출하십시오.
finish();
또는
onBackPressed();
이전 액티비티 사용으로 이동하려는 경우
finish();
또는
onBackPressed();
두 번째 활동 또는 그 이하로 이동하려면 다음을 사용하십시오.
intent = new Intent(MyFourthActivity.this , MySecondActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
//Bundle is optional
Bundle bundle = new Bundle();
bundle.putString("MyValue1", val1);
intent.putExtras(bundle);
//end Bundle
startActivity(intent);
명시 적으로 호출 할 수 onBackPressed
있는 가장 쉬운 방법입니다
참조 이전 활동으로 이동 다시 자세한 내용을
의도를 사용하여 두 번째 활동을 시작하십시오 (사용 startActivity
또는startActivityForResult
요구 사항에 따라). 사용자가 뒤로 버튼을 누르면 상단의 현재 활동이 닫히고 이전 활동이 표시됩니다.
이제 언어, 국가 등 사용자에 대한 일부 설정을 선택하는 활동과 활동을 선택한 후 다음 버튼을 클릭하여 로그인 양식으로 이동하는 두 가지 활동이 있다고 가정 해 보겠습니다. 이제 로그인에 실패하면 사용자가 로그인 활동에 참여하게됩니다. 로그인이 성공하면 어떻게됩니까?
로그인에 성공하면 다른 활동을 시작해야합니다. 이는 세 번째 활동이 시작되고 여전히 두 가지 활동이 실행 중임을 의미합니다. 이 경우을 사용하는 것이 좋습니다 startActivityForResult
. 로그인에 성공하면 OK 데이터를 첫 번째 활동으로 다시 보내고 로그인 활동을 종료하십시오. 이제 데이터가 수신되면 세 번째 활동을 시작하고 finish를 사용하여 첫 번째 활동을 닫으십시오.
이전 활동으로 돌아가는 경우는 거의 없습니다.
사례 1 : 이전 활동으로 결과를 되돌리려면 ActivityA.java
Intent intent = new Intent(ActivityA.this, FBHelperActivity.class);
startActivityForResult(intent,2);
FBHelperActivity.java
Intent returnIntent = new Intent();
setResult(RESULT_OK, returnIntent);
finish();
사례 2 : ActivityA-> FBHelperActivity ----> ActivityA
ActivityA.java
Intent intent = new Intent(ActivityA.this, FBHelperActivity.class);
startActivity(intent);
FBHelperActivity.java
after getting of result call finish();
By this way your second activity will finish and because
you did not call finish() in your first activity then
automatic first activity is in back ground, will visible.
언급 된 모든 답변 외에도 여전히이 작업을 수행하는 대체 방법입니다. 클래스 A와 클래스 B의 두 클래스가 있다고 가정 해 보겠습니다.
클래스 A 체크 박스 선택, 일부 데이터 인쇄 및 클래스 B에 대한 의도와 같은 활동을했습니다. 클래스 B, 클래스 A에 여러 값을 전달하고 클래스 A의 이전 상태를 유지하고 싶습니다.이 대안을 사용해보십시오. 이 방법을 설명하는 방법 또는 소스 코드 다운로드
또는
http://developer.android.com/reference/android/content/Intent.html