조각에서 현재 활동 완료
탐색 창으로 사용중인 활동에 조각이 있습니다. 클릭하면 새 활동을 시작하는 버튼이 포함되어 있습니다 (조각의 startActivity는 단순히 현재 활동에서 startActivity를 호출합니다).
내 인생에서 나는 새로운 활동을 시작한 후 현재 활동을 어떻게 끝낼 지 알 수없는 것 같다.
나는 조각에서 다음과 같은 것을 달성하려고합니다.
@Override
public void onClick(View view) {
// TODO Auto-generated method stub
if (view == mButtonShows) {
Intent intent = new Intent(view.getContext(), MyNewActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();
}
}
그러나 Fragment.class는 finish ()를 구현하지 않는 것 같습니다 (startActivity (...)를 구현하는 것처럼).
두 번째 활동을 시작할 때 활동 백 스택을 지우고 싶습니다. (따라서 새로운 활동에서 뒤로 누르면 기술적으로 런처로 다시 떨어집니다)
조각으로 작업 할 때 this
컨텍스트를 사용 하거나 참조하는 대신 항상 getActivity()
. 당신은 전화해야합니다
getActivity().finish();
조각에서 활동을 완료합니다.
사실은...
나는 조각이 활동을 끝내려고하지 않을 것입니다. 그것은 내 생각에 조각에 너무 많은 권한을 부여합니다. 대신 http://developer.android.com/training/basics/fragments/communicating.html 에서 가이드를 사용합니다.
Fragment가 활동이 구현해야하는 인터페이스를 정의하도록합니다. 활동을 호출 한 다음 활동이 정보로 수행 할 작업을 결정하도록합니다. 활동이 자체적으로 완료되기를 원한다면 가능합니다.
Jon F Hancock 에서 언급했듯이 이것은 프래그먼트가 종료 할 활동을 제안하여 활동을 '종료'할 수있는 방법입니다. 이것은 조각을 그 이유대로 이식 가능하게 만듭니다. 다른 활동에서 사용하는 경우 활동을 닫고 싶지 않을 수 있습니다.
아래 코드는 저장 및 취소 버튼이있는 활동 및 프래그먼트의 스 니펫입니다.
PlayerActivity
public class PlayerActivity extends Activity
implements PlayerInfo.PlayerAddListener {
public void onPlayerCancel() {
// Decide if its suitable to close the activity,
//e.g. is an edit being done in one of the other fragments?
finish();
}
}
호출 활동이 구현해야하는 인터페이스를 포함하는 PlayerInfoFragment.
public class PlayerInfoFragment extends Fragment {
private PlayerAddListener callback; // implemented in the Activity
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
callback= (PlayerAddListener) activity;
}
public interface PlayerAddListener {
public void onPlayerSave(Player p); // not shown in impl above
public void onPlayerCancel();
}
public void btnCancel(View v) {
callback.onPlayerCancel(); // the activity's implementation
}
}
아주 간단합니다 ...
1- getActivity()
조각에서 활동을 잡아라.
2- 그런 다음 전화 finish();
그래서 getActivity().finish();
부모 활동을 마칠 것입니다.
finish를 사용하여 조각을 닫을 때마다 전체 활동이 닫힙니다. 문서에 따르면 조각은 부모 활동이 유지되는 한 유지되어야합니다.
대신 다음 문을 사용하여 부모 활동으로보기를 다시 변경할 수 있음을 발견했습니다. setContentView (R.layout.activity_main);
그러면 부모 활동으로 돌아갑니다.
나는 이것이 이것을 찾고있는 다른 사람에게 도움이되기를 바랍니다.
프래그먼트에서 활동을 완료하려면 getActivity () 메소드를 사용해야합니다.
getActivity().finish();
In Fragment use getActivity.finishAffinity()
getActivity().finishAffinity();
It will remove all the fragment which pushed by the current activity from the Stack with the Activity too...
yes Fragment.class
does not implement finish()
When working with fragments, instead of using this or refering to the context, always use getActivity()
. You should call
참고URL : https://stackoverflow.com/questions/7907900/finishing-current-activity-from-a-fragment
'Programing' 카테고리의 다른 글
자바에서 시차를 계산하는 방법은 무엇입니까? (0) | 2020.09.23 |
---|---|
UICollectionViewCell에 둥근 모서리 및 그림자 추가 (0) | 2020.09.23 |
사용자가 화면을 집을 때 UIImage 객체를 확대 / 축소하는 방법은 무엇입니까? (0) | 2020.09.23 |
Bootstrap 4의 드롭 다운에서 화살표를 제거하는 방법은 무엇입니까? (0) | 2020.09.23 |
DockerFile의 "VOLUME"명령어 이해 (0) | 2020.09.23 |