代码之家  ›  专栏  ›  技术社区  ›  mvasco

片段不是从另一个片段启动的

  •  0
  • mvasco  · 技术社区  · 7 年前

    我有一个有两个按钮的片段:btnedit和btnamen。 每个按钮都有一个onclicklistener。 代码如下:

    btnEdit.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    mPref = getActivity().getSharedPreferences(MISDATOS, Context.MODE_PRIVATE);
    
    
    
    
                    SharedPreferences.Editor editor = mPref.edit();
    
                    editor.putString("id_empleo","No");
                    editor.putString("id_grado","No");
    
    
                    editor.apply();
    
                    HomeFragment firstFragment = new HomeFragment();
                    ((MainActivity)getActivity()).getSupportFragmentManager().beginTransaction()
                            .replace(R.id.frame, firstFragment).commit();
    
                }
            });
    
    btnExamen.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
    
                    Toast.makeText(getContext(), "Iniciando examen", Toast.LENGTH_SHORT).show();
    
                    ExamenesFragment secondFragment = new ExamenesFragment();
                    ((MainActivity)getActivity()).getSupportFragmentManager().beginTransaction()
                            .replace(R.id.frame, secondFragment).commit();
                }
            });
    

    问题是第一种方法工作得很好,启动了homefragment。 但第二种方法不是启动片段examfragment。祝酒词开始了。

    我看不到可能是问题所在的代码有什么不同。

    1 回复  |  直到 7 年前
        1
  •  3
  •   Saeed    7 年前

        btnEdit.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) { 
    ...
            // Create new fragment and transaction
            HomeFragment firstFragment = new HomeFragment(); 
            FragmentTransaction transaction = getFragmentManager().beginTransaction();
    
            // Replace whatever is in the frame view with this fragment,
            // and add the transaction to the back stack
            transaction.replace(R.id.frame, firstFragment );
            transaction.addToBackStack(null);
    
            // Commit the transaction
            transaction.commit();                  
                    }
                });
    
        btnExamen.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
        ...
    
            ExamenesFragment secondFragment= new ExamenesFragment(); 
            FragmentTransaction transaction = getFragmentManager().beginTransaction(); 
            transaction.replace(R.id.frame, secondFragment);
            transaction.addToBackStack(null); 
            transaction.commit();                   
                    }
                });