나는 세 개가 있습니다 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;
}
}
버튼 클릭시 새 객체를 만들지 말고 조각에 값이 있는지 확인하십시오. –
값이 포함되어 있습니다. 생성하지 않고 해당 조각을 다시 표시하는 방법은 무엇입니까? –