我希望我的应用程序有一个显示 PreferencesScreen 以设置应用程序的活动。这个画面只能在安装后显示一次,我该怎么做?
我知道我可以处理 sharedprefs,但是如何处理?
问候凯
我希望我的应用程序有一个显示 PreferencesScreen 以设置应用程序的活动。这个画面只能在安装后显示一次,我该怎么做?
我知道我可以处理 sharedprefs,但是如何处理?
问候凯
我认为你有一个主要活动,当你的应用程序执行时首先显示。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
您可以将一个布尔变量添加到您的共享首选项中,以检查第一次启动状态。首次启动时,将变量设置为 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
}
}