私は次のコードを持っています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
のテキストボックスがあり、タブを切り替えると、それらのテキストボックスに追加したデータがアプリから失われます。add
andの代わりに、フラグメント状態を保存するandremove
を使用したいと思います。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