我有这样的代码,如果应用程序是首次启动的。如果是第一次启动,则显示“注册”活动,然后在第二次启动时,显示“ 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();
// ...
}