728x90
반응형
SMALL
뒤로 버튼을 눌렀을 때, 프래그먼트 라면 실행중인 프래그먼트를 종료하고,
메인 액티비티라면 뒤로버튼을 두번 눌러 어플을 종료해 보겠습니다.
onBackPressedListener.java
public interface onBackPressedListener {
void onBackPressed();
}
먼저, onBackPressedListener 인터페이스를 만들어 줍니다.
MainActivity.java
private long lastTimeBackPressed;
...
@Override
public void onBackPressed() {
//프래그먼트 onBackPressedListener사용
List<Fragment> fragmentList = getSupportFragmentManager().getFragments();
for(Fragment fragment : fragmentList){
if(fragment instanceof onBackPressedListener){
((onBackPressedListener)fragment).onBackPressed();
return;
}
}
//두 번 클릭시 어플 종료
if(System.currentTimeMillis() - lastTimeBackPressed < 1500){
finish();
return;
}
lastTimeBackPressed = System.currentTimeMillis();
Toast.makeText(this,"'뒤로' 버튼을 한 번 더 누르면 종료됩니다.",Toast.LENGTH_SHORT).show();
}
MainActivity에서 onBackPressed()를 override하여
back 버튼이 눌렀을때의 이벤트를 실행할 수 있습니다.여기에 추가한 onBackPressedListener를 프래그먼트에서 사용할 수 있도록 코드를 추가해줍니다.
또, 메인에서 두번클릭시 어플을 종료하도록 코드를 추가하였습니다.
Fragment 종료하기
만든 인터페이스 onBackPressedListener를 implements해줍니다.
public class MyFragment extends Fragment implements onBackPressedListener {
private ImageButton btnMain;
...내용입력
그 다음은 onBackPressed()를 override하여 프래그먼트 종료 코드를 실행해주면 됩니다.
@Override
public void onBackPressed() {
goToMain();
}
//프래그먼트 종료
private void goToMain(){
FragmentManager fragmentManager = Objects.requireNonNull(getActivity()).getSupportFragmentManager();
fragmentManager.beginTransaction().remove(MainFragment.this).commit();
fragmentManager.popBackStack();
}
728x90
반응형
LIST
'Android > Function' 카테고리의 다른 글
by viewModels() 사용하는 법, by viewModels() 종속성 추가 (0) | 2020.07.27 |
---|---|
[안드로이드] application context 어디서나 쉽게 가져오기 ― companion object에서 context 사용 (0) | 2020.07.17 |
[Java/Kotlin] Dynamic Recycler View 구현 & Local Database에 데이터 저장(Room) & LiveData 사용하기. (8) | 2020.06.26 |
[안드로이드] Open API 사용하기 ― 공공 데이터 XML 파싱하기 (1) | 2020.06.12 |