public class MenuFragment extends Fragment {
@Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.fragment_menu, container, false);
Button button = (Button)rootView.findViewById(R.id.button); button.setOnClickListener(buttonListener);
return rootView; }
View.OnClickListener buttonListener = new View.OnClickListener(){ @Override public void onClick(View v) { Toast.makeText(getContext(), "메인 화면으로 가기 버튼 클릭", Toast.LENGTH_SHORT).show(); //종료 안됨. // --아래 2줄은 Fragment를 change해주는 소스임 // --MainActivity에 Fragment를 여러장 올려 놓고 서로 교체하는 소스임. // --예url : http://blog.naver.com/ssy9137/220725822294 //MainActivity activity = (MainActivity)getActivity(); //activity.onFragmentChanged(-1);
//getActivity().getFragmentManager().beginTransaction().remove(this).commit(); //this 오류 발생 //getActivity().getSupportFragmentManager().beginTransaction().remove(this).commit(); //this 오류 발생 //getActivity().getSupportFragmentManager().popBackStack(); //종료 안됨 //getActivity().getFragmentManager().popBackStack(); //종료 안됨 //getFragmentManager().popBackStack(); //종료 안됨 //getActivity().onBackPressed(); //아에 앱이 종료 됨. 즉 Main Activity 로 돌아가지 않음. //getActivity().finish(); //아에 앱이 종료 됨. 즉 Main Activity 로 돌아가지 않음.
//종료 안됨. //FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction(); //transaction.addToBackStack(null);
//종료 잘 됨. // 아래 방식은 fragment를 종료하는 방법임 //FragmentManager manager = getActivity().getSupportFragmentManager(); //manager.beginTransaction().remove(MenuFragment.this).commit(); //manager.popBackStack();
//MainActivity.java 의 replace문법으로 fragment를 교체해 준다. MainActivity activity = (MainActivity) getActivity(); activity.onFragmentChanged(1); } }; }
|
출처: https://farmerkyh.tistory.com/22 [농부지기]