我有这样的代码,如果应用程序是首次启动的。如果是第一次启动,则显示“注册”活动,然后在第二次启动时,显示“ MainAcitivity”。

Boolean isFirstRun = getSharedPreferences("PREFERENCE", MODE_PRIVATE).getBoolean("isFirstRun", false);
        if (isFirstRun) {

            startActivity(new Intent(Register.this, MainActivity.class));
            //Toast.makeText(Register.this, "Authenticated", Toast.LENGTH_LONG) .show();
            //finish the application after first run
            finish();
        }
        {
        getSharedPreferences("PREFERENCE", MODE_PRIVATE).edit().putBoolean("isFirstRun", true).commit();
           // finish();
        }


上面的代码可以正常工作,但是如果用户未在register活动中单击按钮并再次启动应用程序,则会将用户带到MainActivity,因此用户未注册而是使用了该应用程序。我如何检查首次启动时是否单击了注册活动中的按钮,如果没有,则如何将用户导航回到注册活动。

用于用户注册的xml

<TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/phone"
        android:layout_centerVertical="true"
        android:text="Username"/>

    <EditText
        android:id="@+id/username"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView1"
        android:layout_below="@+id/textView1"
        android:ems="10" />

    <TextView
        android:id="@+id/TextView01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/username"
        android:layout_below="@+id/username"
        android:text="Phone No" />


    <EditText
        android:id="@+id/phone"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/TextView01"
        android:layout_centerHorizontal="true"
        android:ems="10"/>

    <Button
        android:id="@+id/register"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/phone"
        android:layout_below="@+id/phone"
        android:text="Register" />


更新的代码

@Override
    public void onClick(View v) {
        int id = v.getId();
        if (id == R.id.register) {


//          if(!validate()){
            // call AsynTask to perform network operation on separate thread
            new HttpAsyncTask().execute("http://xyz/create");
            //new AttemptRegistration().execute();
//          }

            Boolean isFirstRun = getSharedPreferences("PREFERENCE", MODE_PRIVATE).getBoolean("isFirstRun", false);
            if (isFirstRun) {
                //show start activity

                startActivity(new Intent(Register.this, MainActivity.class));
                //Toast.makeText(Register.this, "Authenticated", Toast.LENGTH_LONG) .show();
                //finish the application after first run
                finish();
            }
            {
            getSharedPreferences("PREFERENCE", MODE_PRIVATE).edit().putBoolean("isFirstRun", true).commit();
               // finish();
            }

        }


有什么办法可以检查是否单击了注册活动中的按钮

最佳答案

当然。当您打开应用程序时,不要保存您的isFirstRun布尔值,而是单击注册按钮时保存它。只需将逻辑移到注册按钮的onClick方法中即可。但是,您仍然需要检查onCreate活动的Register方法中的布尔值。像这样:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // ....

    Boolean isFirstRun = getSharedPreferences("PREFERENCE", MODE_PRIVATE).getBoolean("isFirstRun", false);
    if (isFirstRun) {
        //show start activity

        startActivity(new Intent(Register.this, MainActivity.class));
        //Toast.makeText(Register.this, "Authenticated", Toast.LENGTH_LONG) .show();
        //finish the application after first run
        finish();
    }
    // .....

}


然后,在您的onClick中:

@Override
public void onClick(View v) {
    getSharedPreferences("PREFERENCE", MODE_PRIVATE).edit().putBoolean("isFirstRun", true).commit();
// ...
}

10-07 18:18