Android 设置PIN屏幕
我已经创建了一个“输入PIN”屏幕。此pin活动将在活动A的启动时调用,如下所示-Android 设置PIN屏幕,android,android-lifecycle,Android,Android Lifecycle,我已经创建了一个“输入PIN”屏幕。此pin活动将在活动A的启动时调用,如下所示- @Override protected void onStart() { // TODO Auto-generated method stub super.onStart(); Log.d("pin", "on start 2"); if (MainActivity.flag) { Intent intent = ne
@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,以便在进入前台时显示pin屏幕。
和
在活动B的onBackPressed中,have put flag=false,这样当从B到A时,pin屏幕不会显示。
但逻辑上存在缺陷,因为pin屏幕在从B到A的过程中显示,而不应该显示。
PS-如果您不理解我的问题,请让我澄清。您可以将额外数据从B传递到A,以澄清它是从B传递到A,而不是从背景。 然后在A中,显示Pin活动的条件应该检查是否存在额外的数据
Intent theintent = new Intent(A.this,B.java);
theintent.putExtra("fromB",true);
startActivity(theintent);
并在活动A中登记:
Intent i= getIntent();
i.getExtra("fromB");
你应该问自己的第一件事是:为什么你不想只在后台提交时显示pin活动 为用户存储pin码,这样他就不必每次都重新键入pin码,这不是很有趣吗?您可以使用SharedReference存储它,并且仅当您没有任何存储的pin时才将用户重定向到此屏幕。如果用户希望手动修改pin,则可以为其添加一个按钮 编辑: 如果您真的必须坚持此工作流,您可以执行以下操作:
@Override
protected void onCreate(Bundle savedInstanceState)
{
...
if (savedInstanceState == null)
{
Intent intent = new Intent(this, PinActivity.class);
startActivity(intent);
}
}
选中savedInstanceState,确保仅在第一次创建活动时才会调用它,并且它应适合您的工作流程。您会发现这不适合回答我的问题。我有一个不想存储pin的商业案例。这个答案值得投否决票,但我想改为发表评论。这是我的错。你能告诉我更多关于你的工作流程吗。你什么时候从B到A?只有背部,或者你也可以把startactivity从B称为A。