我创建了一个 MainActivity,其中用户有一些应用程序选项,显示在网格菜单中,可以访问后续的特定活动。但是,当应用程序启动时,我使用 AlertDialog 让用户输入登录详细信息,在网格布局定义之后膨胀。问题是,每次我在网格菜单中选择一个项目(并因此选择一个新活动)时,AlertDialog 都会再次弹出。我怎样才能避免这种情况?
此外,我有一个上传服务,它应该从 MainActivity 的开头(或者登录之后)开始,但每次调用新活动时都不应该重新启动。我认为这个问题与前一个问题有关,尽管我已经设法通过 OptionsMenu 使用 startService 按钮暂时解决了它。这不是永久的解决方案。
先感谢您。
编辑:我尝试使用 getSharedPreferences 如下:
private SharedPreferences prefs;
private String prefName = "MyPref";
int hasLoggedIn;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mm_gridmenu);
SharedPreferences prefs = getSharedPreferences(prefName, MODE_PRIVATE);
hasLoggedIn = prefs.getInt("hasLoggedIn", 0);
if (hasLoggedIn == 0) {
showDialog(SHOW_DIALOG);
prefs = getSharedPreferences(prefName , MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putInt("hasLoggedIn", 1);
editor.commit();
}
但是,这种方式 hasLoggedIn 值被保存为 1 并且对话框不再弹出。我尝试设置后退按钮来解决这个问题,但这似乎阻止了应用程序被最小化。有没有办法将该操作添加到按钮?(我也会在主页按钮上复制)
@Override
public void onBackPressed() {
prefs = getSharedPreferences(prefName , MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putInt("hasLoggedIn", 0);
editor.commit();
Log.i("hasLoggedIn", hasLoggedIn + "");
return;
}
此外,我相信此操作会影响后续活动(重新设置 alertDialog)。哪个应该是这个的有效替代方案?