У меня есть три Fragments
. При каждом нажатии кнопки он загрузит соответствующий номер Fragment
. Если я снова попытаюсь щелкнуть по кнопке, он заново создаст новый Fragment
и загрузит, но вместо создания нового Fragment
мне нужно будет показать существующий back-stack Fragment
.Фрагмент Back-stack 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;
}
}
Не создавайте новый объект при нажатии кнопки, проверьте, имеет ли значение значение или нет. –
содержит значение, как отображать снова этот фрагмент при щелчке без создания? –