Tom*_*ary 33 android bundle fragment
我有一个使用XML(活动中的setContentView())附加到活动的片段.有一个问题,因为我的片段中有非常动态的视图,因此当方向更改时,我必须恢复所有视图状态.
我有问题,因为我正在使用类似的东西:
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putBoolean("restore", true);
outState.putInt("nAndroids", 2);
}
Run Code Online (Sandbox Code Playgroud)
但是在方向更改后调用param Bundle savedInstanceState的方法时(如onCreateView等),我的savedInstanceState始终为null.
我不是Android中的菜鸟,但现在因为这个问题我很生气...
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
if (savedInstanceState == null) {
//smth
} else {
// smthelse THIS IS NEVER REACHED BECAUSE BUNDLE IS ALWAYS NULL
}
getListView().setDivider(getResources().getDrawable(R.drawable.list_divider));
}
Run Code Online (Sandbox Code Playgroud)
Tom*_*ary 62
所有问题都在于我没有为XML中的片段声明android:id.Android需要ID或TAG来识别存储的片段并重现其中的所有元素.所以,请记住 - 片段的每个实例都需要唯一的ID或标签!
此外,当声明setRetainInstance(true)时,bundle应始终返回null.
小智 6
我有一个类似的问题,尽管我总是向Fragment提供捆绑包,但总是将saveInstanceState设置为null。
对我有用的唯一解决方案是
myFragment.setArguments(bundle)
Run Code Online (Sandbox Code Playgroud)
和我的活动包一起做
Bundle bundle = this.getArguments();
Run Code Online (Sandbox Code Playgroud)
在片段的onCreateView中。
希望这对其他人有帮助。
| 归档时间: |
|
| 查看次数: |
38032 次 |
| 最近记录: |