Android Activity Flow (Login or Register and go to

2019-02-18 14:11发布

问题:

I am building an application which requires user authentication. First time a user opens the app should login or register to continue to the home screen of the app which loads some posts..

i should mention that the home screen should be a FragmentActivity to allow user navigate between 2-3 tabs.. this means that i should have another Activity (for the login screen or register) to allow the user to continue later to home.

MainActivity
    |
    |
    --> Check If user logged in
              |       |
              |       |
              |       --> Start Login Activity (Or Register From Here)
              |
              --> Start Home Activity (FragmentActivity with 2-3 tabs-fragments)

Right now in the main Activity i am checking through shared preferences if user already logged in and then i start the FragmentActivity or the login Activity if user has not logged in.

I don't know if this is a problem, but when one of these two activities has started if i press back it goes on a blank screen and nothing happens. Seems logic because this is the MainActivity and its actually blank. i only have an if statement there to proceed to the appropriate activity.

Is this a nice approach or should i develop this with another way?

回答1:

You can finish your main activity just after you navigate to home/login screen ex:

Intent intent=new Intent(this,Home.class);
startActivity(intent);
finish();

By doing this if user presses a back button on login or home page blank page wont be visible.

Also you can use your main activity as splash screen where you show some image and in background decide to go to login/home activity.



回答2:

If you wish you put login screen as dialog box, which may help you. For creating login dialog you can use below code.

// Create Object of Dialog class
final Dialog login = new Dialog(this);
// Set GUI of login screen
login.setContentView(R.layout.login_dialog);
login.setTitle("Login to Pulse 7");

// Init button of login GUI
Button btnLogin = (Button) login.findViewById(R.id.btnLogin);
Button btnCancel = (Button) login.findViewById(R.id.btnCancel);

 // Attached listener for login GUI button
 btnLogin.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        Toast.makeText(Pulse7LoginDialogActivity.this,
               "Login Sucessfull", Toast.LENGTH_LONG).show();
   }
});
btnCancel.setOnClickListener(new OnClickListener() {
   @Override
   public void onClick(View v) {
       login.dismiss();
   }
 });

 // Make dialog box visible.
 login.show();


回答3:

This code can be used...

      Intent intent=new Intent(this,Home.class);
      intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
      startActivity(intent);
      finish();