问题:
我以编程方式将一个片段添加到LinearLayout.它出现在我的活动中,很棒.我转动设备 - >配置更改:一切都被销毁以重新创建.但是,在调用onDestroy()之前,应该调用onSaveInstanceState().这是父活动的情况,但不是我添加的片段.为什么?
码:
XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@id/parent_LL"
android:stuff="myStuff"
>
<LinearLayout
android:id="@id/categories_activity_LL1"
android:stuff="myStuff" />
<LinearLayout
android:id="@id/categories_activity_LL2"
android:stuff="myStuff" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
我将片段添加到父活动的UI中:
ft.add(container1, categories, CatFragIds.CATEGORIES.toString()).commit();
Run Code Online (Sandbox Code Playgroud)
我重写我的片段的onSaveInstanceState():
@Override
public void onSaveInstanceState(Bundle outState) {
// Récupère extensible
boolean extensible = ((CategoryAppsListView) this.getListView())
.isExtensible();
mState.setExtensible(extensible);
// Transmet l'état de CategoriesListElems
FragmentManager fm = getFragmentManager();
@SuppressWarnings("unchecked")
FragRetainObject<CategoriesListElemsState> retainedState =
(FragRetainObject<CategoriesListElemsState>)
fm.findFragmentByTag(CATEGORIESLISTELEMS_STATE+"_"+this.getTag());
if( retainedState == null) {
retainedState =
FragRetainObject.<CategoriesListElemsState>newInstance(mState);
fm.beginTransaction()
.add(retainedState, CATEGORIESLISTELEMS_STATE+"_"+this.getTag()).commit();
}
else retainedState.setRetainObj(mState);
super.onSaveInstanceState(outState);
}
Run Code Online (Sandbox Code Playgroud)
感谢您的时间!!:-)
我在Android项目上使用Eclipse.我更新到狮子,问题开始出现......尝试几个小时的东西,没有结果.
这是问题所在:
我的项目中有几十个文件com.stuff.morestuff.我想crtl + shift + O我的项目,所以每个导入都解决了.但是,在每个文件上,eclipse都要求我解决歧义.
因此,我想强加给eclipse选择第一选择.
一些线索
1 - 我试图在构建路径中制定规则,但这是强大的.例如:如果我从构建路径中排除android.R,那么它不会出现在选项中,但我无法在我的代码中明确使用它...
2 - 手动 - >长
3 - 我尝试配置"组织导入"工具,但没有成功.
谢谢你的回答!