安卓:保存查看传呼机状态 [英] Android :Save View Pager State

查看:133
本文介绍了安卓:保存查看传呼机状态的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想保存视图寻呼机的状态,以避免对方向变化再次产生碎片。任何建议是高度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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆