Since TabActivity is deprecated, I need to find a way to do this with fragments.
If you do not want to use TabActivity- forget about putting FragmentActivitiestabs in the contents.
I remind you that you can use TabWidgetwithout TabActivity. So you can try this solution:
- Create only one
FragmentActivity. TabWidget FragmentActivity. TabWidget= 0.TabWidget XML Fragment (FrameLayout ).FragmentActivity (TabHost.OnTabChangeListener) Fragment .- ( ) .
FragmentActivity TabWidget, Fragment Fragment .
, 3 3 , , . showFragmentX, .
public class Test extends FragmentActivity {
private Fragment1 fragment1=new Fragment1();
private Fragment2 fragment2=new Fragment2();
private Fragment3 fragment3=new Fragment3();
private void showFragment1(){
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.fragments_container, fragment1);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.commit();
}
private void showFragment2(){
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.fragments_container, fragment2);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.commit();
}
private void showFragment3(){
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.fragments_container, fragment3);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.commit();
}
@Override
protected void onCreate(Bundle arg0) {
super.onCreate(arg0);
setContentView(R.layout.fragmentactivity_layout);
}
}
, fragmentX , fragment_container. , FragmentActivity . .
OnCreateView onDestroyView , replace .
onSaveInstanceState, . : 1 editText. ( ), ,
1.save name string 1 onSaveInstanceState
2. 1 OnCreateView savedInstanceState bundle, null - edittext , .
public class Fragment1 extends Fragment {
EditText nameEditText;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
View fragment1View=inflater.inflate(R.layout.fragment1_layout, container, false);
nameEditText=(EditText) fragment1View.findViewById(R.id.edittext_name);
if(savedInstanceState!=null){
String nameString=(String) savedInstanceState.get("nameString");
nameEditText.setText(nameString);
}
return fragment1View;
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString("nameString", nameEditText.getText().toString());
}
}
. , .
, setRetainInstance(true) onCreateView() Fragment - ( ).