当前位置: 首页 > 知识库问答 >
问题:

保存活动- Android

夏祺然
2023-03-14

我有一个具有两个活动的Android应用程序 - activity_login.xmlactivity_dashboard.xml

当用户第一次打开应用程序时,它应该将他们带到activity_login,然后,他们应该登录并转到具有注销按钮的activity_dashboard

如果他们按下“注销”按钮,它应该再次返回到activity_login。如果他们按下后退按钮,它应该退出应用程序。当他们按下应用程序图标时,它应该直接将他们带到activity_dashboard

我对如何保存活动并在按下应用程序图标时返回该特定活动感到困惑。

共有3个答案

濮宇定
2023-03-14

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

    < li >如果通过按“注销”按钮关闭仪表板活动,它不会执行任何操作。 < li >如果通过按“后退”按钮关闭它,它也将完成登录

这是完整的代码:

登陆界面

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();
            }
         });
    }
}
阎祖鹤
2023-03-14

如果您已登录,则必须在启动intent后调用finish()才能转到activity_dsahboard。在这种情况下,如果您仍然登录,您将直接转到activity_dashboard。这里是一个样本,

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

如果要存储登录状态,请使用共享首选项保存一个标识符,该标识符的值将在成功进行身份验证时设置。只需创建一些逻辑,并在共享环境中保存一个标识符。这种方式对于专业应用程序来说并不理想。你需要一大堆复杂的机制来做到这一点。

赫连捷
2023-03-14

很简单,你需要使用 SharedPreference 来存储登录状态 defualt 值如果为 false,当使用登录时将值更改为 true,每次打开应用程序只需检查状态并相应地导航,当用户单击后退按钮签入上继续用户是否登录的方法,然后打开该活动

使用此 https://medium.com/viithiisys/android-manage-user-session-using-shared-preferences-1187cb9c5cd8

 类似资料:
  • 问题内容: 我正在创建应用程序并在其中使用一些hibernate的东西。我要做的就是将实体保存到数据库中,但我不断收到此异常: 起初,我遇到了这个异常: 然后,我发现需要将其添加到我的hibernate配置中: 这解决了这个问题,但是现在出现了上面的问题。我将实体保存到这样的数据库中: 我的hibernate.cfg.xml文件如下所示: 我在用: Hibernate-4.1.4.Final JD

  • HTTP/1.1服务器默认为连接头的保持活动设置。那么,为什么大多数浏览器在其请求中都包含Connection:Keep-Alive,即使它们知道目标服务器支持HTTP/1.1?

  • 活动1:我有一个图像视图,其中从相机和画廊拍摄的图像被设置,它工作正常。在这个活动中有一个右键单击按钮,它将重定向到第二个活动。 活动2:在这个活动中,我有四个选择 保存 活动3:从上述四个选项中,第三个活动相应地工作。现在我不知道如何将第一个活动中拍摄的图像传递给第三个活动。 我的努力:在从相机拍摄的第一张活动图片中: 在第二个活动SaveVia中: 在第三个名为“保存”的活动中:

  • 问题内容: 我在当前的项目中使用它来处理客户端身份验证等。当前它仅打印出客户端地址/端口,以便我可以检查一个TCP连接是否用于多个请求()或是否有新连接为每个请求建立(因此每次都会进行新的SSL握手)。当我使用FireFox对服务器发出多个请求时,我可以看到keep- alive正在运行。因此服务器部分可以很好地处理GET和POST请求。 如果我过去对服务器发出请求(在这种情况下, 不 使用SSL