1

我是开发 Android 应用程序的新手。我知道如何使用 AndroidManifest.xml 设置启动 Activity,但我需要一种方法在选择启动 Activity 之前先检查某些内容。

我的问题:我创建了一个 loginActivity 和一个 mainActivity。我想做以下事情:如果我登录,我会将标志设置为 1,并且在下一次应用启动时,我想直接显示 mainActivity 而不是登录。

有没有办法做到这一点?我想创建一个启动画面,我可以在显示第一个活动之前检查我是否登录。

谢谢,菲利普

更新的代码 - 工作:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // get preferences
    SharedPreferences userDetails = getApplicationContext().getSharedPreferences("userdetails", 0);
    String savedEmail = userDetails.getString("email", "");
    String savedPassword = userDetails.getString("password", "");
    Boolean savedRemember = userDetails.getBoolean("remember", false);
    Boolean savedLogged = userDetails.getBoolean("logged", false);

    // check if already logged in
    if(savedLogged) {
        // start the overview
        Intent intent = new Intent(this, ActivityOverview.class);
        startActivity(intent);
        finish();
    }
    else {
        // initialize the form layout
        setContentView(R.layout.activity_login);

        // get views
        this.email = (EditText)findViewById(R.id.editTextEmail);
        this.password = (EditText)findViewById(R.id.editTextPassword);
        this.remember = (CheckBox)findViewById(R.id.checkBoxRemember);

        // set values to views
        this.email.setText(savedEmail);
        this.password.setText(savedPassword);
        this.remember.setChecked(savedRemember);
    }
}
4

4 回答 4

0

你真的不需要启动画面。

当用户成功登录到您的应用程序时,将SharedPreferences中的布尔标志设置为 true。检查登录活动中的此标志是否为真,onCreate()如果是,则使用 anIntent启动主要活动。

于 2012-11-22T17:54:30.590 回答
0

您不需要显示您的活动。不确定您的代码流究竟是什么,但您可以安全地开始,即使用 LoginActivity。检查您onCreate()是否已经登录(无论对您来说意味着什么),如果是这样,请立即启动 MainActivity 杀死 LoginActivity finish()

于 2012-11-22T17:54:47.407 回答
0

使用启动画面将是一个好主意。启动 loginActivity 将在瞬间显示登录屏幕。这将是不可取的。

于 2012-11-22T18:02:39.303 回答
0

我的一个应用程序中有类似的东西。我让用户选择天气是否应该自动登录。这是保存在SharedPreferences.

当应用程序启动并在主页中时,您应该检查 - BEFOREsetContentView(R.layout.activity_login);set finish();afterstartActivity();

if(savedLogged) {

    Intent intent = new Intent(this, ActivityOverview.class);
    startActivity(intent);
    finish();
}
setContentView(R.layout.activity_login);
于 2012-11-22T18:13:29.030 回答