마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

버튼 클릭으로 FragmentTransaction 으로 화면 전환 시 버튼을 2번 눌러야 실행

0 추천

버튼 클릭으로 FragmentTransaction 으로 화면 전환을 하는데요.

버튼을 2번 눌러야 화면이 전환됩니다.

그래서 화면전환 switch문에 toast문을 넣어보았더니

첫번째 클릭에는 toast가 안나오고, 두번째 클릭에만 toast가 나오면서 화면이 전환되더라구요.

소스에서 잘못된 점 지적 부탁 드립니다.

public class Menu1Fragment extends Fragment {

    Button mBtnCategory, mBtnDetail;

    FragmentManager fm;
    FragmentTransaction tran;
    Menu1FragmentCategory fragmentCategoryFrag;
    Menu1FragmentDetail fragmentDetailFrag;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        View v = inflater.inflate(R.layout.fragment_menu1, container, false);

        //FrameLayout 화면 전환
        mBtnCategory = (Button)v.findViewById(R.id.categorySelectButton);
        mBtnDetail = (Button)v.findViewById(R.id.detailSelectButton);

        mBtnCategory.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                setFragment1Frag(0);
            }
        });

        mBtnDetail.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                setFragment1Frag(1);
            }
        });

        fragmentCategoryFrag = new Menu1FragmentCategory();
        fragmentDetailFrag = new Menu1FragmentDetail();

        //FrameLayout 초기상태
        setFragment1Frag(0);

        return v;
    }

    public void setFragment1Frag(int index){
        fm = getFragmentManager();
        tran = fm.beginTransaction();

        switch (index){
            case 0:
                Toast.makeText(getActivity(), "index 0", Toast.LENGTH_LONG).show();
                tran.replace(R.id.fragment_menu1_frame, fragmentCategoryFrag);
                tran.addToBackStack(null);
                tran.commit();
                break;
            case 1:
                Toast.makeText(getActivity(), "index 1", Toast.LENGTH_LONG).show();
                tran.replace(R.id.fragment_menu1_frame, fragmentDetailFrag);
                tran.addToBackStack(null);
                tran.commit();
                break;
        }
    }
}

 

sketchbook (310 포인트) 님이 2019년 3월 18일 질문
소스는 딱히 이상 없을 듯 한데.. Actionbar 같은 다른 layout에서 touch 이벤트를 먼저 먹어서 동작 안될 수 있으니 그 쪽을 확인 해 보시는걸 추천합니다.

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...