我有三個Fragments
。在每個按鈕上單擊,它將加載相應的Fragment
。如果我再次嘗試點擊按鈕,它將重新創建一個新的Fragment
並加載,但不是創建一個新的Fragment
我需要顯示現有的後備棧Fragment
。片段後備棧android
代碼:
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Frag1 frag1;
private Frag2 frag2;
private Frag3 frag3;
Button one,two,three;
FragmentTransaction fragmentTransaction;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
registerViewComponent();
registerClick();
}
private void registerClick() {
one.setOnClickListener(this);
two.setOnClickListener(this);
three.setOnClickListener(this);
}
private void registerViewComponent() {
one=(Button)findViewById(R.id.one);
two=(Button)findViewById(R.id.two);
three=(Button)findViewById(R.id.three);
}
@Override
public void onClick(View view) {
switch (view.getId())
{
case R.id.one:
frag1=new Frag1();
frag3=new Frag3();
frag2=new Frag2();
fragmentTransaction=getSupportFragmentManager().beginTransaction();
Fragment fragment2 = getSupportFragmentManager().findFragmentByTag("Frag1");
Log.v("Tag","Tagg::"+fragment2);
if (fragment2 instanceof Frag1){
Log.v("If","IF::"+fragment2);
}
else {
fragmentTransaction.add(R.id.stack_frame,frag1,"Frag1").addToBackStack("Frag1");
fragmentTransaction.commit();
}
break;
case R.id.two:
frag2=new Frag2();
Fragment fragment = getSupportFragmentManager().findFragmentByTag("Frag2");
Log.v("Tag","Tagg::"+fragment);
if (fragment instanceof Frag2){
Log.v("If","IF::"+fragment);
}
else {
fragmentTransaction=getSupportFragmentManager().beginTransaction();
fragmentTransaction.add(R.id.stack_frame,frag2,"Frag2").addToBackStack("Frag2");
fragmentTransaction.commit();
}
break;
case R.id.three:
frag3=new Frag3();
Fragment fragment1 = getSupportFragmentManager().findFragmentByTag("Frag3");
Log.v("Tag","Tagg::"+fragment1);
if (fragment1 instanceof Frag3){
Log.v("If","IF::"+fragment1);
}
else {
fragmentTransaction=getSupportFragmentManager().beginTransaction();
fragmentTransaction.add(R.id.stack_frame,frag3,"Frag3").addToBackStack("Frag3");
fragmentTransaction.commit();
}
break;
}
}
不要在按鈕單擊時創建新對象,檢查片段是否有值 –
它包含值,如何在不創建時再次顯示該片段? –