安卓:保存查看传呼机状态 [英] Android :Save View Pager State
问题描述
我想保存视图寻呼机的状态,以避免对方向变化再次产生碎片。任何建议是高度AP preciated。
I am trying to save view pager state, in order to avoid creating fragments once again on orientation change. Any suggestions is highly appreciated.
我想下面的东西,但不知道它是如何工作的?
I tried below stuff, but not sure how it will work...
int pagerId = 0;
mPager = (ViewPager) findViewById(R.id.pager);
DialerPagerAdapter viewpageradapter = new DialerPagerAdapter(fm);
if (savedInstanceState != null) {
if (savedInstanceState.getInt("tab") != -1) {
mPager.setCurrentItem(savedInstanceState.getInt("tab"));
pagerId=savedInstanceState.getInt("pagerState");
}
}
mPager.setOnPageChangeListener(ViewPagerListener);
if (pagerId != -1 ){
mPager.setId(pagerId);
}else{
pagerId=mPager.getId();
}
mPager.setAdapter(viewpageradapter);
在saveInstanceState我做下面的东西
in saveInstanceState I am doing below stuff
outState.putInt("pagerState" , mPager.getId() );
谢谢 Venkatraman
Thanks Venkatraman
推荐答案
实例共享preferences节约串并检索它再次在任何地方你的应用程序。
Example saving string in shared preferences and retrieve it again anywhere in your app.
public class PreferencesData {
public static void saveString(Context context, String key, String value) {
SharedPreferences sharedPrefs = PreferenceManager
.getDefaultSharedPreferences(context);
sharedPrefs.edit().putString(key, value).commit();
}
public static String getString(Context context, String key, String defaultValue) {
SharedPreferences sharedPrefs = PreferenceManager
.getDefaultSharedPreferences(context);
return sharedPrefs.getString(key, defaultValue);
}
}
用法:
PreferencesData.saveString(context, "mynote", "Sherlock is weird");
// retrieve
String note = PreferencesData.getString(context, "mynote", "");
使用这个节省暂停字符串,并重新创建它的onCreate,或者在任何你需要的信息
Use this to save the string on pause, and recreate it in onCreate, or where ever you need the information
同样的方法可以容易地用于其他类型的简单
The same method can easily be used for other simple types.
有关你的使用情况:
public class PreferencesData {
public static void saveInt(Context context, String key, int value) {
SharedPreferences sharedPrefs = PreferenceManager
.getDefaultSharedPreferences(context);
sharedPrefs.edit().putInt(key, value).commit();
}
public static int getInt(Context context, String key, int defaultValue) {
SharedPreferences sharedPrefs = PreferenceManager
.getDefaultSharedPreferences(context);
return sharedPrefs.getInt(key, defaultValue);
}
}
在你的code:
mPager = (ViewPager) findViewById(R.id.pager);
DialerPagerAdapter viewpageradapter = new DialerPagerAdapter(fm);
if (savedInstanceState != null) {
if (savedInstanceState.getInt("tab") != -1) {
// this could also be saved with PreferencesData
// but if you want the app to start at the first
// tab when device is restarted or recreated, this is fine.
mPager.setCurrentItem(savedInstanceState.getInt("tab"));
}
}
// defaults to 0 if first startup after install
int pagerId = PreferencesData.getInt(this, "pagerId", 0);
mPager.setId(pagerId);
mPager.setOnPageChangeListener(ViewPagerListener);
mPager.setAdapter(viewpageradapter);
和中的onPause()
And in onPause()
PreferencesData.saveInt(this, "pagerId", mPager.getId());
这篇关于安卓:保存查看传呼机状态的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!