gpt4 book ai didi

java - 翻转手机时 .GON​​E 和 .VISIBLE 会重置

转载 作者:行者123 更新时间:2023-12-01 16:59:08 25 4
gpt4 key购买 nike

我制作了两个按钮,一个可见,一个隐藏。当单击可见按钮时,它消失,另一个变得可见(它可以工作),但是,当我将手机翻转到一侧(横向模式)时,所有内容都会“重置”,所以我必须再次按下该按钮才能使其不可见,并且另一个可见,那不是我想要的,无论我有手机,“直”或“翻转”,操作应该是相同的。如何最简单地解决这个问题?

                    Button mButton = (Button)findViewById(R.id.button1);
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Button butt1 = (Button) findViewById(R.id.button1);
butt1.setVisibility(View.GONE);
Button butt2 = (Button) findViewById(R.id.button2) ;
butt2.setVisibility(View.VISIBLE);
}
});

最佳答案

您需要的是能够在其他地方保存按钮的状态。我可以说出两个您可以使用的名称:SharedPreferencesViewModel

就您而言,我建议创建一个 ViewModel 类来保存按钮的状态。

CustomViewModel 类

import androidx.lifecycle.ViewModel;

public class CustomViewModel extends ViewModel {
public boolean button1_gone;
}

然后在您的 Activity 中:

final CustomViewModel model = new ViewModelProvider(this).get(CustomViewModel.class);

if (model.button1_gone) {
Button butt1 = findViewById(R.id.button1); // I know that butt1 is redundant here
butt1.setVisibility(View.GONE);
Button butt2 = findViewById(R.id.button2);
butt2.setVisibility(View.VISIBLE);
model.button1_gone = true;
}

Button mButton = findViewById(R.id.button1);
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Button butt1 = findViewById(R.id.button1);
butt1.setVisibility(View.GONE);
Button butt2 = findViewById(R.id.button2);
butt2.setVisibility(View.VISIBLE);
model.button1_gone = true;
}
});

另外,不要忘记在您的应用程序 gradle 中添加这些依赖项(带有 app 的依赖项,而不是带有您的项目名称的依赖项):

def lifecycle_version = "2.2.0"
implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"
implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version"

注意:您需要添加这些依赖项,否则您将无法获得仅采用一个参数的 ViewModelProvider 的正确构造函数。

要了解有关 ViewModel 的更多信息,请转到此处:https://developer.android.com/topic/libraries/architecture/viewmodel

<小时/>

重要提示: 切勿在 ViewModel 中声明 UI Controller 变量,因为这会导致内存泄漏。 UI Controller 有 TextViewButton 等。

关于java - 翻转手机时 .GON​​E 和 .VISIBLE 会重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61540462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com