[英]AlertDialog restarted each time I return to MainActivity
我创建了一个 MainActivity,其中用户有几个应用程序选项,显示在网格菜单中,可以访问后续的特定活动。 但是,当应用程序启动时,我使用 AlertDialog 供用户输入登录详细信息,它在网格布局定义之后膨胀。 问题是,每次我 select 网格菜单中的一个项目(以及一个新活动)时,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)。 哪个应该是一个有效的替代方案?
基本上你需要跟踪你的应用程序状态,你有几个选项可以做到这一点。 一种简单的方法是在用户登录后使用SharedPreferences
存储一个名为 hasLoggedIn 的hasLoggedIn
变量,您将此值设置为true
。 每次您的主要活动启动时,只需检查hasLoggedIn
的值,如果它设置为false
,则需要用户再次登录。 如果已经为真,则不显示登录对话框
你可以试试这个:在你的 MainActivity 中添加一个 boolean 标志:
private boolean dialogFlag = true;
在 onCreate/onResume 方法中:
if(dialogFlag) {
createDialog();
dialogFlag = false;
}
如果您只想在应用程序安装后弹出,您可以将此标志保存到属性文件中。 并在应用程序启动时先阅读它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.