设置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的值,所以我设置它

  1. trueonStop(),使引脚屏幕显示,而来到前景。,
  2. flag = false放在活动B的onBackPressed()中,因此从B到a的引脚屏幕不会显示

但是逻辑上有缺陷,因为从B到A时出现了引脚屏幕,而它不应该出现。(PS -如果你不明白我的问题,请让我澄清)

你可以传递额外的数据从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");

你应该问自己的第一件事是:为什么你不想只在来自后台时显示pin活动?

为用户存储pin,这样他就不用每次都重新输入了,这不是很有趣吗?您可以使用SharedPreference存储它,并且只有在没有任何存储的pin时才将用户重定向到此屏幕。如果你的用户想手动修改pin,你可以为他添加一个按钮。

SharedPreference例子编辑:

如果你真的要坚持这个工作流程,你可以这样做:

@Override
protected void onCreate(Bundle savedInstanceState)
{
    ...
    if (savedInstanceState == null)
    {
        Intent intent = new Intent(this, PinActivity.class);
        startActivity(intent);
    }
}

检查savedInstanceState确保它只会在第一次创建活动时被调用,并且应该适合您的工作流。

相关内容

  • 没有找到相关文章

最新更新