gpt4 book ai didi

java - 如何使用attach()和detach()而不是add()和remove()来保存 fragment View

转载 作者:行者123 更新时间:2023-12-01 14:17:40 24 4
gpt4 key购买 nike

我有以下 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 fragment 中有一些文本框,在选项卡之间切换会强制应用程序丢失我添加到这些文本框中的任何数据。我想使用保存 fragment 状态的 attachdetach 来代替 addremove。 p>

如何在我已有的代码中实现这一点?

更新:

代码现在看起来像这样:

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();
}

关于java - 如何使用attach()和detach()而不是add()和remove()来保存 fragment View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17972345/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com