我有开始屏幕,这是我在应用程序中的第一个活动。
此活动仅包含一个按钮,当单击它时,它应导航到另一个活动,该活动将提示用户输入名称。
如果用户在确认名称之前按返回按钮,则应导航回上一个活动。
但是,当用户确认名称时,应弹出主要活动,并从应用程序中删除已放弃的活动。
我一直在寻找解决方案,并在创建静态活动对象时找到了它,但是我发现它不明智,并且对内存不利。
做我解释过的最好方法是什么?
答案 0 :(得分:0)
您好,一次检查可能会很有帮助...
@Override
public void onBackPressed() {
if (name.isconfirmed())
{
Intent intent=new Intent(this,MainActivity.class);
startActivity(intent);
finish();
}
else
{
super.onBackPressed();
}
}
答案 1 :(得分:0)
尝试:
实施该代码以清除其他堆栈活动
Intent intent = new Intent(this, newActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
this.startActivity(intent);
我希望这对您有帮助
答案 2 :(得分:0)
第一个Activity
应该使用Activity
调用第二个startActivityForResult()
。首先在Activity
中实现onActivityResult()
,如下所示:
如果resultCode
是RESULT_CANCELED
,则用户单击了BACK键,因此您无需执行任何操作
如果resultCode
是RESULT_OK
,则用户输入了他的用户名,您就可以启动主Activity
并呼叫finish()
。这将从堆栈中删除第一个Activity
。
当用户确认其用户名后,第二个Activity
应该呼叫setResult(RESULT_OK)
,然后呼叫finish()
。这将结束第二个Activity
,并通过调用Activity
返回第一个onActivityResult()
。
注意:
第二个Activity
可以将数据(例如输入的用户名或其他内容)返回给第一个Activity
,作为传递给Intent
的{{1}}中的“扩展名”。