2016-10-19 4 views
1

は私がフラグメントに問題がある、私はチェックボックスをクリックしたときに、すべての追加の断片を削除する必要がありますが、今の断片が削除されていない私は自分のコードの下に追加したことで、ここでは、この問題を解決するために私を導いてくださいチェックボックスをクリックすると、AppCompatActivityのすべてのフラグメントが削除されますか?

public class MainActivity extends AppCompatActivity implements View.OnClickListener { 
    TextView txtVw_showfirstfragment,txtVw_showsecondfragment; 
    FragmentTransaction ft; 
    CheckBox checkBox; 
    fragment1 frag1 = new fragment1(); 
    fragment2 frag2 = new fragment2(); 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     txtVw_showfirstfragment = (TextView) findViewById(R.id.txtVw_showfirstfragment); 
     txtVw_showsecondfragment = (TextView) findViewById(R.id.txtVw_showsecondfragment); 
     checkBox = (CheckBox)findViewById(R.id.checkBox); 
     txtVw_showfirstfragment.setOnClickListener(this); 
     txtVw_showsecondfragment.setOnClickListener(this); 
     checkBox.setText("I Agree"); // Prompting "Hide Password" 
     // Begin the transaction 
     checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
      public void onCheckedChanged(CompoundButton arg0, boolean isChecked) { 
       if (isChecked) { 
        if(frag1!=null) ft.remove(frag1); 
        if(frag2!=null) ft.remove(frag2); 
       } 
      } 
     }); 


    } 

    @Override 
    public void onClick(View v) { 
     switch (v.getId()) { 
      case R.id.txtVw_showfirstfragment: 
       String backFragment1 = getApplicationContext().getClass().getName(); 
       ft = getSupportFragmentManager().beginTransaction(); 

       // Replace the contents of the container with the new fragment 
       ft.replace(R.id.your_placeholder,frag1); 
       ft.addToBackStack(backFragment1); 

       // Complete the changes added above 
       ft.commit(); 
       break; 
      case R.id.txtVw_showsecondfragment: 
       String backFragment2 = getApplicationContext().getClass().getName(); 
       ft = getSupportFragmentManager().beginTransaction(); 

       // Replace the contents of the container with the new fragment 
       ft.replace(R.id.your_placeholder,frag2); 
       ft.addToBackStack(backFragment2); 

       // Complete the changes added above 
       ft.commit(); 
       break; 


     } 
    } 


} 

答えて

1

ft.remove(frag1);の代わりにgetSupportFragmentManager().beginTransaction().remove(frag1).commit();を使用してください。

+0

非常に良い回答、ありがとうございます。 –

+0

あなたの貴重な時間をありがとう。 –

関連する問題