为此,我尝试在onPause()&中使用getFragmentManager().saveFragmentInstanceState().然后在onCreateVIEw()中调用setinitialSavedState().
我面临的问题是我不知道如何准确地使用它们以及何时调用它们.
这两个函数都采用SavedState类型的参数,我不知道如何使用它.
码:
public class AudioContainerFragmentClass extends Fragment implements OnClickListener { final String TAG = "AudioContainerFragmentClass"; private button bSetname; private TextVIEw tvname; @OverrIDe public voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @OverrIDe public VIEw onCreateVIEw(LayoutInflater inflater,VIEwGroup container,Bundle savedInstanceState) { VIEw vIEw = null; try { Log.e(TAG,"onCreateVIEw()"); vIEw = inflater.inflate(R.layout.audio_fragment_container,null); bSetname = (button) vIEw.findVIEwByID(R.ID.bSetname); tvname = (TextVIEw) vIEw.findVIEwByID(R.ID.tvname); bSetname.setonClickListener(this); if(savedInstanceState != null){ setinitialSavedState(/* WHICH SavedState OBJECT TO PASS */); } Log.e(TAG,"onCreate()"); } catch (Exception e) { Log.e(TAG,"onCreateVIEw(): " + e.toString()); } return vIEw; } /* @OverrIDe public voID onSaveInstanceState(Bundle outState) { Log.e(TAG,"onSaveInstanceState()"); super.onSaveInstanceState(outState); } */ @OverrIDe public voID onClick(VIEw v) { tvname.setText("sometext"); } @OverrIDe public voID onPause() { super.onPause(); getFragmentManager().saveFragmentInstanceState( /* WHAT TO ADD HERE */); }}解决方法 只是自己调查一下,并认为我会记录我发现的东西.
在将片段附加到活动后,无法调用setinitialSavedState(),如AndroID源代码around line 491中所述.
setinitialSavedState()旨在在代码中实例化片段后立即使用.例如:
AudioContainerFragmentClass newFrag = new AudioContainerFragmentClass();newFrag.setinitialSavedstate(savedStateObject);总结
以上是内存溢出为你收集整理的android – 如何以及在何处使用片段内的setInitialSavedState和saveFragmentInstanceState全部内容,希望文章能够帮你解决android – 如何以及在何处使用片段内的setInitialSavedState和saveFragmentInstanceState所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)