显示设置并在首次启动时牢记

时间:2013-03-19 08:17:55

标签: android android-activity settings sharedpreferences

我希望我的应用程序有一个活动,显示用于设置应用程序的PreferencesScreen。这个屏幕只能在安装后显示一次,我该怎么做?

我知道我可以处理sharedprefs,但是怎么做?

问候 佳

2 个答案:

答案 0 :(得分:3)

我认为您的主要活动会在您的应用执行时首先显示。只有在您第一次运行应用程序时,才可以在onCreate()中添加一个非常简单的代码来加载首选项活动。像这样:

import android.content.SharedPreferences;
import android.app.Activity;
import android.os.Bundle;

public class ActivityMain extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // get shared preferences
        SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());

        // first time run?
        if (pref.getBoolean("firstTimeRun", true)) {

            // start the preferences activity
            startActivity(new Intent(getBaseContext(), ActivityEditPreferences.class));

            //get the preferences editor
            SharedPreferences.Editor editor = pref.edit();

            // avoid for next run
            editor.putBoolean("firstTimeRun", false);
            editor.commit();
        }
    }
}

ActivityEditPreferences是加载默认Android偏好设置编辑器的另一个活动。希望这可以帮到你。

修改 为了完整起见,我还向您展示了管理首选项的活动:

import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.Preference.OnPreferenceClickListener;
import android.widget.Toast;

public class ActivityEditPreferences extends PreferenceActivity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                addPreferencesFromResource(R.xml.preferences);
...

您可以在此处获得完整示例:http://www.kaloer.com/android-preferences

不要忘记查看官方参考:http://developer.android.com/reference/android/preference/PreferenceActivity.html

答案 1 :(得分:0)

您可以向共享prefs添加布尔变量,以检查首次启动状态。首次启动时,将变量设置为false。在后续启动时,您可以检查变量的状态以检查该启动是否首次启动。

public void OnCreate(Bundle savedInstance)
{
    // your other code

    SharedPreferences sharedPrefs=getSharedPreferences("MyAppPrefs",0);
    // The default value is true as the preference does not exist yet
    boolean isFirstLaunch=sharedPrefs.getBoolean("firstLaunch",true);
    if(isFirstLaunch)
    {
        // An editor so you can write the preference
        SharedPrefrences.Editor editor=sharedPrefs.edit();
        // subsequent launches will get this value as false
        editor.putBoolean("firstLaunch",false);
        editor.commit();
    }
    else
    {
        // Do other work if this is not the first launch
    }

}