繁体   English   中英

如何在启动 Intent 后保持 TextView 和 Button 不可见

[英]How to keep a TextView and a Button invisible after starting an Intent

所以我有一个 MainActivity,上面有“登录”按钮、“参加测验”按钮和“未注册?单击此处”TextView。 如果用户登录,“登录”按钮和 TextView 将不可见,而“我的帐户”按钮将变为可见。 假设用户决定在参加测验之前登录。 一切正常——“登录”按钮和 TextView 不可见,“我的帐户”按钮可见。 之后,用户决定参加测验,这会将他们带到另一个活动。 完成测验后,他们将被带到第三个活动 - ResultActivity。 有一个“菜单”项可以将它们带回 MainActivity 并带有意图:

 @Override
    public boolean onOptionsItemSelected(@NonNull MenuItem item) {
        switch(item.getItemId())
        {
            case android.R.id.home:
                Intent intent = new Intent(getApplicationContext(), MainActivity.class);
                startActivity(intent);
                break;
        }
        return true;
    }

现在问题来了。 当用户返回到 MainActivity 时,不是“我的帐户”按钮,而是“登录”按钮和要注册的 TextView。 如何让它们不可见并让“我的帐户”按钮可见?

我可能应该使用 savedInstanceState 但我不知道如何使用,因为每个在线教程只包含 EditText 或 Textview 中的文本。 对于这么长的问题,我深表歉意。

那是因为您正在创建一个新的 Activity 而不是“返回”到第一个。 这个菜单应该弹出堆栈,直到你点击 MainActivity。

我建议使用片段而不是这么多活动。

您可以创建一个类似isAuthenticated的布尔变量,并在用户通过身份验证时将其设置为 true,并在用户未通过身份验证时将其改回 false。 您还可以使用 sharedPreferences 存储布尔变量。 因此,每当您返回MainActivity您都可以从共享首选项中获取该布尔变量并检查它是真还是假。 因此,如果isAuthenticated为真,则使登录按钮不可见,否则使其可见。

另一种方法是使用 Firebase 进行身份验证,我认为这更好。

您可以将它的状态存储在一个变量中,检查它并采取相应的行动。
例如:-您可以使用 SharedPreferences
https://stackoverflow.com/a/35554369/5642890

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM