0

我总共有 9 个活动,我想使用向上导航按钮。我使用了 2 个父活动,即一个用于登录活动,另一个用于选项活动。请看代码。

它适用于:ResetActivity -> Loginactivity;忘记密码活动 -> 登录活动

其余的都不起作用请帮助我解决问题。

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".LoginActivity"
        android:label=" Login"
        android:launchMode="singleTop" >
    </activity>

    <activity
        android:name=".RegisterActivity"
        android:label="Register"
        android:parentActivityName=".LoginActivity" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value=".LoginActivity" />
    </activity>

    <activity
        android:name=".ForgotPasswordActivity"
        android:label="Forgot password"
        android:parentActivityName=".LoginActivity" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value=".LoginActivity" />
    </activity>

    <activity
        android:name=".ResetActivity"
        android:label="Reseting password"
        android:parentActivityName=".LoginActivity" >

    </activity>

    <activity
        android:name=".OptionActivity"
        android:label="Option details"
        android:launchMode="singleTop" >
    </activity>

    <activity
        android:name=".ProductActivity"
        android:label="Add Product"
        android:parentActivityName=".OptionActivity" >

    </activity>

    <activity
        android:name=".MapsActivity"
        android:label=":location"
        android:parentActivityName=".OptionActivity" >

    </activity>

    <activity
        android:name=".HelpActivity"
        android:label="How to use App"
        android:parentActivityName=".OptionActivity" >

    </activity>

    <activity
        android:name=".ViewActivity"
        android:label="View"
        android:parentActivityName=".OptionActivity" >

    </activity>

我的登录活动代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);
    getActionBar().setDisplayHomeAsUpEnabled(true);
    Button btnLinkToRegister = (Button) findViewById(R.id.btnlinkregister);
    Button btnToForgot = (Button) findViewById(R.id.btnforgot);
    Button signIn = (Button) findViewById(R.id.signin);
    inputUsername = (EditText) findViewById(R.id.name);
    inputPassword = (EditText) findViewById(R.id.password);


    // Progress dialog
    pDialog = new ProgressDialog(this);
    pDialog.setCancelable(false);


    // SqLite database handler
    db = new UserData(getApplicationContext());


    btnLinkToRegister.setOnClickListener(new View.OnClickListener() {

        public void onClick(View view) {
            Intent i = new Intent(LoginActivity.this,
                    RegisterActivity.class);
            startActivity(i);
            finish();
        }
    });


    btnToForgot.setOnClickListener(new View.OnClickListener() {

        public void onClick(View view) {
            Intent forgot = new Intent(LoginActivity.this,
                    ForgotPasswordActivity.class);
            startActivity(forgot);

        }
    });


    // Login button Click Event
    signIn.setOnClickListener(new View.OnClickListener() {

        public void onClick(View view) {
            String name = inputUsername.getText().toString();
            String password = inputPassword.getText().toString();

            if(name.equals("")&&password.equals("")) {
                Toast.makeText(getApplicationContext(), "Username or Password is empty",
                        Toast.LENGTH_LONG).show();
                return;
            }
            try {


                if (name.length() > 0 && password.length() > 0) {
                    db = new UserData(LoginActivity.this); //create again database to retrive
                    if( db.Login(name, password)){
                        Toast.makeText(getApplicationContext(), "Login is Successful", Toast.LENGTH_LONG).show();

                        Intent work = new Intent(LoginActivity.this,
                                OptionActivity.class);
                      // work.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                       //work.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
                        startActivity(work);
                        finish();

                    } else {
                        Toast.makeText(getApplicationContext(), "Invalid Username/Password", Toast.LENGTH_LONG).show();
                    }


                }
            } catch (Exception e) {
                Toast.makeText(LoginActivity.this, "Problem occurred",
                        Toast.LENGTH_LONG).show();
            }
        }
    });}



private void showDialog() {
    if (!pDialog.isShowing())
        pDialog.show();
}

private void hideDialog() {
    if (pDialog.isShowing())
        pDialog.dismiss();
}
@Override
public void onBackPressed() {
    super.onBackPressed();

}

}

我的注册活动代码:

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

    setContentView(R.layout.activity_register);
    inputUsername = (EditText) findViewById(R.id.name);
    inputPassword = (EditText) findViewById(R.id.password);
    inputEmail = (EditText) findViewById(R.id.email);
    register = (Button) findViewById(R.id.btnRegister);
    btnLinkToLogin = (Button) findViewById(R.id.btnLinkToLoginScreen);
    ActionBar ab = getActionBar();
    ab.setDisplayHomeAsUpEnabled(true);



    // Progress dialog
    pDialog = new ProgressDialog(this);
    pDialog.setCancelable(false);

    // SQLite database handler
    db = new UserData(getApplicationContext());


    //When register button is click the database updated
    register.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            String name = inputUsername.getText().toString();
            String password = inputPassword.getText().toString();
            String email = inputEmail.getText().toString();

            if (!name.isEmpty() && !email.isEmpty() && !password.isEmpty()) {
                //inputUsername.setText("");
                //inputPassword.setText("");
                //inputEmail.setText("");
                //registerUser(name, email, password);
                db.addUser(name, email, password);
                Toast.makeText(getBaseContext(), "Registration is successful", Toast.LENGTH_LONG).show();
                Intent i1 = new Intent(getApplicationContext(),
                        LoginActivity.class);
                startActivity(i1);


            }else{
                Toast.makeText(getApplicationContext(),
                        "Please enter your details!", Toast.LENGTH_LONG)
                        .show();
            }
        }
    });

    // Link to Login Screen
    btnLinkToLogin.setOnClickListener(new View.OnClickListener() {

        public void onClick(View view) {
            Intent i = new Intent(getApplicationContext(),
                    LoginActivity.class);
            startActivity(i);

        }
    });

}


@Override
public boolean onOptionsItemSelected(MenuItem item) {

    switch(item.getItemId()){
        case android.R.id.home:
            NavUtils.navigateUpFromSameTask(this);
            return true;
    }
    return super.onOptionsItemSelected(item);
}


private void showDialog() {
    if (!pDialog.isShowing())
        pDialog.show();
}

private void hideDialog() {
    if (pDialog.isShowing())
        pDialog.dismiss();
}

@Override
public void onBackPressed() {
    Intent reg = new Intent(RegisterActivity.this,
            LoginActivity.class);
    startActivity(reg);
    finish();
}

}

4

1 回答 1

0

我假设您单击 LoginActivity 中的 Register 按钮对吗?在LoginActivity的 btnLinkToRegister 中,您正在调用finish(); 启动RegisterActivity后。finish()方法关闭活动,因此,当您按下向上按钮(或按下返回按钮)时,LoginActivity 将无法再打开,因此它将转到主屏幕。

于 2015-09-18T03:43:46.973 回答