1

在我的应用程序中,用户首先会看到一个带有徽标和登录/注册按钮的屏幕。有登录和注册屏幕,在它们之后,用户转到主屏幕。

我想阻止他们在他们登录/注册后看到第一个屏幕和/或登录/注册屏幕,直到他们退出。

这是我尝试过的:

public class MainActivity extends Activity {
private boolean isUserLoggedIn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        sharedPrefs = getApplicationContext().getSharedPreferences(APP_SHARED_PREFS, Context.MODE_PRIVATE);
        isUserLoggedIn = sharedPrefs.getBoolean("userLoggedInState", false);
        if(isUserLoggedIn) {
            finish();
        }
`}

我希望它能够将它们重定向回调用活动,但它并没有这样做。更糟糕的是,如果我已经登录并转到其他应用程序,当我回到这个应用程序时,我会被抛出,因为在共享偏好中我已经登录了,所以这个 finish() 带我回到以前的应用程序。这是我的洗衣店活动。

4

2 回答 2

2

您可以在调用 finish() 方法之前开始另一个活动。

当您想从 Activity 中获取结果时,您将使用 startActivityForResult 方法启动该 Activity。然后您可以覆盖活动的 onBackPressed 方法,您可以从中获得一些结果。

public void onBackPressed() { 
    Intent intent = new Intent();
    // add any value to intent
    setResult(RESULT_CANCALLED, intent); 
    super.onBackPressed(); 
}

您将收到此意图

public void onActivityResult(int requestCode, int resultCode, Intent intent) {
    // in this method
}

的调用活动。

于 2013-11-03T11:54:07.763 回答
1

您可以使用以下代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    sharedPrefs = getApplicationContext().getSharedPreferences(APP_SHARED_PREFS, Context.MODE_PRIVATE);
    isUserLoggedIn = sharedPrefs.getBoolean("userLoggedInState", false);
    if(isUserLoggedIn) {
        Intent intent = new Intent(this , NameOfActivityToStart.class);
        intent.addFlag(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(intent);
    }

使用此代码,此页面和任何较旧的页面都会从历史记录中删除,并且如果用户单击后退按钮看不到此页面。

于 2013-11-03T12:54:14.400 回答