2013-03-19 89 views
2

我希望我的应用程序具有显示用于设置应用程序的PreferencesScreen的活动。这个屏幕只有在安装后才会显示一次,我该怎么做?显示设置并在第一次启动应用程序时记住

我知道我可以使用sharedprefs处理,但是如何?

问候 佳

+0

你有什么代码吗? – Raynold 2013-03-19 08:20:43

回答

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

+0

谢谢!这就是我正在寻找的! – kai 2013-03-19 08:37:53

+0

不客气! – 2013-03-19 08:38:55

+0

什么是getSetting()?我也可以使用pref.getBoolen(),对不对? – kai 2013-03-19 09:01:24

0

您可以将布尔变量添加到您的共享首选项,检查第一次发射状态。首次启动时,将该变量设置为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 
    } 

} 
+0

感谢您的快速回复。我应该将这些代码放在获取其他用户信息或启动画面的活动中吗? – kai 2013-03-19 08:36:30

+0

这取决于你。如果您有一项活动可以检索您提及的其他信息,则可以将此代码添加到该活动中。 – sandyiscool 2013-03-19 08:40:43

+0

好的,谢谢你的帮助。 – kai 2013-03-19 08:44:25

相关问题