我创建了一个“输入PIN码”屏幕。此活动的活动将在活动A的onStart()
中调用,如下所示 -
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
Log.d("pin", "on start 2");
if (MainActivity.flag) {
Intent intent = new Intent(con, PinActivity.class);
MainActivity.flag = false;
startActivity(intent);
}
}
但是,我只希望在用户从后台到前台时显示此活动。不是来自活动B(活动B来自活动A)。
这个逻辑依赖于这个MainActivity.flag
的值,所以我设置它
true
中onStop()
,以便在进入前台时显示引脚屏幕。
和,flag = false
放入活动B的onBackPressed()
,以便从B到A时不会显示图钉。但逻辑上存在缺陷,因为引脚屏幕在从B到A时出现,而它不应该出现。 (PS - 如果你不理解我的问题,请让我澄清。)
答案 0 :(得分:0)
您可以将额外的数据从B传递给A,以澄清它是从B到A,而不是从背景 然后在A中,显示Pin Activity的条件应检查是否存在额外数据。
Intent theintent = new Intent(A.this,B.java);
theintent.putExtra("fromB",true);
startActivity(theintent);
并检查活动A:
Intent i= getIntent();
i.getExtra("fromB");
答案 1 :(得分:0)
你要问自己的第一件事是:为什么你只是在从背景出来时才显示引脚活动?
为用户存储引脚是不是很有趣,这样他每次都不必重新键入它?您可以使用SharedPreference存储它,并仅在您没有任何存储的引脚时将用户重定向到此屏幕。然后,如果他想要手动修改引脚,则可以为用户添加一个按钮。
编辑:
如果你真的必须坚持这个工作流程,你可以这样:
@Override
protected void onCreate(Bundle savedInstanceState)
{
...
if (savedInstanceState == null)
{
Intent intent = new Intent(this, PinActivity.class);
startActivity(intent);
}
}
检查savedInstanceState确保仅在第一次创建活动时调用它,并且该活动应适合您的工作流程。