我编写了一个需要XMPP连接的消息传递应用程序。当用户更改应用程序内的页面时,一切正常。当我向他发送通知并点击它以返回我的应用程序时,一切都还可以。但当他试图从他的最后一次申请中回到我的申请时#34;页面我的应用程序将他重定向到我的登录屏幕。由于他已经连接,他无法再次登录,因此他被困在那里。如何将某人从主菜单重定向到登录以外的其他屏幕(我认为它会将他发送到登录,因为它是我的主要活动。)通过发送通知,我可以轻松指定目标。这是我在loginActivity中尝试的内容。
protected void onRestart() {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
boolean loginStatus=prefs.getBoolean("xmpp_logged_in",true);
if (loginStatus) {
Intent intent = new Intent(this, ConversationActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();
}
super.onRestart();
}
我有一个解决方案,但它不是一个漂亮的解决方案。我的应用程序遵循此屏幕登录 - 显示联系人 - 与用户的消息 因此,在Show Contacts中,我对onBackPressed进行了覆盖,并使其与home按钮相同。这是代码
public void onBackPressed() {
Intent setIntent = new Intent(Intent.ACTION_MAIN);
setIntent.addCategory(Intent.CATEGORY_HOME);
setIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(setIntent);
}
答案 0 :(得分:2)
我建议您将代码放在onResume()
而不是onRestart()
内,因为每次您的应用进入前景状态时,都会调用此处的代码行。
您的代码似乎没问题。您是否可以确保在成功登录后致电apply()
或commit()
到您的Shared Preference
交易?
例如,
prefs.edit().putBoolean("xmpp_logged_in", true).commit();