Java 保存活动-Android

Java 保存活动-Android,java,android,android-studio,android-activity,onsaveinstancestate,Java,Android,Android Studio,Android Activity,Onsaveinstancestate,我有一个android应用程序,它有两个活动-activity\u login.xml和activity\u dashboard.xml 当用户第一次打开应用程序时,它应将他们带到活动\ u登录,然后,他们应登录并转到带有注销按钮的活动\ u仪表板 如果他们按下“注销”按钮,则应再次返回“活动”登录。如果他们按下后退按钮,它将退出应用程序。当他们按下应用程序图标时,它会将他们直接带到activity\u dashboard 当按下应用程序图标时,我不知道如何保存活动并返回到特定的活动。如果您已登

我有一个android应用程序,它有两个活动-
activity\u login.xml
activity\u dashboard.xml

当用户第一次打开应用程序时,它应将他们带到
活动\ u登录
,然后,他们应登录并转到带有注销按钮的
活动\ u仪表板

如果他们按下“注销”按钮,则应再次返回“活动”登录。如果他们按下后退按钮,它将退出应用程序。当他们按下应用程序图标时,它会将他们直接带到
activity\u dashboard


当按下应用程序图标时,我不知道如何保存活动并返回到特定的活动。

如果您已登录,您必须在启动intent to activity_dsahboard后调用finish()。在这种情况下,如果您仍在登录,您将直接转到activity_dashboard。下面是一个示例

          Intent I = new Intent(this,ActivtyDashBoard.class);
           startActivity(i);
           finsih();//place it after you launch intent to go to 
                    //activity_dashboard

如果要存储登录状态,使用共享首选项保存标识符,该标识符的值将在成功身份验证时设置。只需创建一些逻辑并在共享首选项中保存标识符。这种方式不适合professiona应用程序。这样做需要大量复杂的机制。

很简单,您需要使用共享首选项来存储登录状态解除值如果使用登录时为false,则会将值更改为true,每次打开应用程序时,只需检查状态并进行相应导航,当用户单击“上一步”按钮时,在恢复方法中签入该用户是否登录,然后打开该活动

用这个

观察仪表板终端。 使用startActivityForResult()启动仪表板活动,并观察仪表板活动是如何完成的

  • 如果按注销按钮关闭了仪表板活动,则它不会执行任何操作
  • 如果按“后退”按钮将其关闭,它也将完成登录
  • 以下是完整代码:

    物流活动

    仪表板代码


    这可能会帮助你:@Mustansir这不是我想要的答案。他的问题是当用户仍在应用程序中时保存活动。我的任务是在用户退出应用程序后保存活动。这就是为什么人们经常添加一个“启动”屏幕来决定去哪一个to@AnikethChavare您在活动中具体保存了什么?以及,我应该在哪里添加
    finish()在我的代码中?请再次阅读我的答案。。如果您已登录,您只需致电finush:更新示例代码请将我的答案标记为已接受,如果有帮助,请向上投票。。评论如果你有疑问,实际上,它不起作用。如果我清除手机中的活动并打开我的应用程序,它将不会进入仪表板活动。请更正您的逻辑。。如果您正确地检查是否登录,然后在这种情况下使用代码,则不可能不工作。可能在您的登录活动中,您没有正确地检查是否登录。请仔细检查您的代码
    
    public class LoginActivity extends AppCompatActivity {
    
        private Button login;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.activity_main);
    
           login = findViewById(R.id.login);
    
           login.setOnClickListener(new View.OnClickListener() {
               @Override
               public void onClick(View view) {
                   Intent intent = new Intent(LoginActivity.this, DashBoard.class);
                   startActivityForResult(intent, 9000);
                }
            });
    
        }
    
        @Override
        public void onActivityResult(int req, int res, Intent result) {
             super.onActivityResult(req, res, result);
             if(res== Activity.RESULT_CANCELED){
                finish();
             }
         }
     }
    
    public class DashBoard extends AppCompatActivity {
    
        private Button logout;
    
        @Override
        public void onCreate(Bundle savecInstanceState){
            super.onCreate(savecInstanceState);
            setContentView(R.layout.dash_board);
            logout = findViewById(R.id.logout);
            logout.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                   setResult(Activity.RESULT_OK);
                   finish();
                }
             });
        }
    }