[英]How to attach() and detach() instead of add() and remove() to save fragment view
我為ActionBar
使用以下代碼:
private class MyTabListener implements ActionBar.TabListener
{
private Fragment mFragment;
private final Activity mActivity;
private final String mFrag;
public MyTabListener( Activity activity, String fragName )
{
mActivity = activity;
mFrag = fragName;
}
@Override
public void onTabReselected( Tab tab, FragmentTransaction ft )
{
// TODO Auto-generated method stub
}
@Override
public void onTabSelected( Tab tab, FragmentTransaction ft )
{
mFragment = Fragment.instantiate( mActivity, mFrag );
ft.add( android.R.id.content, mFragment );
}
@Override
public void onTabUnselected( Tab tab, FragmentTransaction ft )
{
ft.remove( mFragment );
mFragment = null;
}
}
我在這些Tab
片段中有一些文本框,在這些Tab
之間切換會迫使應用程序丟失我添加到這些文本框的任何數據。 除了使用add
和remove
,我還想使用attach
和detach
來保存片段狀態。
如何在已有的代碼中完成此操作?
更新 :
現在的代碼如下所示:
private class MyTabListener implements ActionBar.TabListener
{
private Fragment mFragment;
private final Activity mActivity;
private final String mFrag;
public MyTabListener( Activity activity, String fragName )
{
mActivity = activity;
mFrag = fragName;
}
@Override
public void onTabReselected( Tab tab, FragmentTransaction ft )
{
// TODO Auto-generated method stub
}
@Override
public void onTabSelected( Tab tab, FragmentTransaction ft )
{
//mFragment = Fragment.instantiate( mActivity, mFrag );
//ft.add( android.R.id.content, mFragment );
mFragment = mActivity.getSupportFragmentManager().findFragmentByTag(mFrag);
if( mFragment == null ) {
mFragment = Fragment.instantiate(mActivity, mClass.getName());
ft.add(android.R.id.content, mFragment, mFrag);
} else {
ft.attach(mFragment);
}
}
@Override
public void onTabUnselected( Tab tab, FragmentTransaction ft )
{
//ft.remove( mFragment );
//mFragment = null;
if (mFragment != null) {
ft.detach(mFragment);
}
}
}
我收到以下一行錯誤:
mFragment = mActivity.getSupportFragmentManager().findFragmentByTag(mFrag);
錯誤:
The method getSupportFragmentManager() is undefined for the type Activity
無需重寫代碼,只需使用SharedPreferences
臨時存儲所顯示的變量。
在要離開的選項卡的onDestroy
方法中,只需將變量添加到首選項中,然后在重新輸入選項卡時檢索它們。
@Override
public void onDestroy(){
super.onDestroy();
Log.i("OnDestroy", "Logged");
SharedPreferences prefs = getActivity().getSharedPreferences("name", Context.MODE_PRIVATE);
Editor editor = prefs.edit();
editor.putString("stringName", stringToStore);
editor.commit();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.