我想创建一个在应用程序启动后只显示一次的屏幕。之后,它将只显示主屏幕。我实现这一点的方法只是检查首选项并基于标志设置当前布局。用这种方式实现它有什么退路吗?有更好的办法吗?
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Here is the main layout
setContentView(R.layout.main);
mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
// second argument is the default to use if the preference can't be found
Boolean welcomeScreenShown = mPrefs.getBoolean(welcomeScreenShownPref, false);
if (!welcomeScreenShown) {
//Here I set the one-time layout
setContentView(R.layout.popup_message);
SharedPreferences.Editor editor = mPrefs.edit();
editor.putBoolean(welcomeScreenShownPref, true);
editor.commit(); // Very important to save the preference
}
}
最佳答案
尝试使用应用程序版本代码。下面是我使用的示例代码;
SharedPreferences sharedPreferences = getSharedPreferences("version", 0);
int savedVersionCode = sharedPreferences.getInt("VersionCode", 0);
int appVershionCode = 0;
try {
appVershionCode = getPackageManager().getPackageInfo(getPackageName(), 0).versionCode;
} catch (NameNotFoundException nnfe) {
Log.w(TAG, "$ Exception caz of appVershionCode : " + nnfe);
}
if(savedVersionCode == appVershionCode){
Log.d(TAG, "$$ savedVersionCode == appVershionCode");
}else{
Log.d(TAG, "$$ savedVersionCode != appVershionCode");
SharedPreferences.Editor sharedPreferencesEditor = sharedPreferences.edit();
sharedPreferencesEditor.putInt("VersionCode", appVershionCode);
sharedPreferencesEditor.commit();
Builder alertDialogBuilder = new Builder(this);
alertDialogBuilder.setTitle("Version");
alertDialogBuilder.setMessage("This is one time show dialog box ");
alertDialogBuilder.setNeutralButton("Close", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Log.d(TAG, "$$ onClick");
}
});
alertDialogBuilder.show();
}