如何在启动 Intent 后保持文本视图和按钮不可见



所以我有一个主活动,上面有"登录"按钮,一个"参加测验"按钮和"未注册?点击这里"文本视图。如果用户登录,"登录"按钮和 TextView 将变为不可见,并且"我的帐户"按钮将变为可见。假设用户决定在参加测验之前登录。一切都按预期工作 - "登录"按钮和TextView不可见,"我的帐户"按钮变得可见。之后,用户决定参加测验,这会将他们带到另一个活动。参加测验后,他们将被带到第三个活动 - 结果活动。有一个"菜单"项将它们带回主活动,意图是:

@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;
}

现在问题来了。当用户返回主活动时,不是"我的帐户"按钮,而是"登录"按钮和要注册的文本视图。如何使它们不可见并使"我的帐户"按钮可见?

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

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

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

这是因为您正在创建一个新的活动,而不是"返回"第一个活动。这个菜单应该弹出堆栈,直到你点击主活动。

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

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

最新更新