gpt4 book ai didi

java - 定义 keyPreference 使 imageView 可见和不可见

转载 作者:行者123 更新时间:2023-11-29 19:25:58 25 4
gpt4 key购买 nike

我有三个 Activity,每个 Activity 都有一个按钮。 Act1 与 btn1,Act2 与 btn2,Act3 与 btn3。我有另一个 Activity 作为 MainActivity,具有三个 imageView:ImageView1、imageView2 和 imageView3,所有这些最初都是不可见的。我想要它,所以当我在 act1 中单击 btn1 时,MainActivity 中的 imageView1 将可见,当再次单击 btn1 时,imageView1 将再次不可见。 imageView2 和 imageView3 也类似。到目前为止我有这段代码:

Activity1

public class Activity1 extends AppCompatActivity{

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity1);

Button btn1 = (Button) findViewById(R.id.btn1);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String visibilityStr = PublicSharedPreferences.getDefaults("keyVisibility1", getApplicationContext());

if (visibilityStr != null) {
if (visibilityStr.equals("0")) {
Toast.makeText(act1.this, "it visibled", Toast.LENGTH_SHORT).show();
visibilityStr = "1";
btn1.setImageResource(R.mipmap.img1);

} else {
visibilityStr = "0";
Toast.makeText(act1.this, "it invisibled", Toast.LENGTH_SHORT).show();
btn1.setImageResource(R.mipmap.img2);

}
} else {
visibilityStr = "1";
Toast.makeText(act1.this, "it visibled", Toast.LENGTH_SHORT).show();
btn1.setImageResource(R.mipmap.img1);

}

PublicSharedPreferences.setDefaults("keyVisibility1", visibilityStr, getApplicationContext());

}
});
}





Activity2

public class Activity2 extends AppCompatActivity{

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity2);


Button btn1 = (Button) findViewById(R.id.btn2);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String visibilityStr = PublicSharedPreferences.getDefaults("keyVisibility2", getApplicationContext());

if (visibilityStr != null) {
if (visibilityStr.equals("0")) {
Toast.makeText(act2.this, "it visibled", Toast.LENGTH_SHORT).show();
btn2.setImageResource(R.mipmap.img1);

visibilityStr = "1";
} else {
visibilityStr = "0";
Toast.makeText(act2.this, "it invisibled", Toast.LENGTH_SHORT).show();
btn2.setImageResource(R.mipmap.img2);

}
} else {
visibilityStr = "1";
Toast.makeText(act2.this, "it visibled", Toast.LENGTH_SHORT).show();
btn2.setImageResource(R.mipmap.img1);

}

PublicSharedPreferences.setDefaults("keyVisibility2", visibilityStr, getApplicationContext());

}
});
}



Activity3

public class Activity3 extends AppCompatActivity{

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity3);

Button btn1 = (Button) findViewById(R.id.btn3);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String visibilityStr = PublicSharedPreferences.getDefaults("keyVisibility3", getApplicationContext());

if (visibilityStr != null) {
if (visibilityStr.equals("0")) {
Toast.makeText(act3.this, "it visibled", Toast.LENGTH_SHORT).show();
Btn3.setImageResource(R.mipmap.img1);

visibilityStr = "1";
} else {
visibilityStr = "0";
Toast.makeText(act3.this, "it invisibled", Toast.LENGTH_SHORT).show();
btn3.setImageResource(R.mipmap.img2);

}
} else {
visibilityStr = "1";
Toast.makeText(act3.this, "it visibled", Toast.LENGTH_SHORT).show();
btn3.setImageResource(R.mipmap.img1);

}

PublicSharedPreferences.setDefaults("keyVisibility3", visibilityStr, getApplicationContext());
}
});
}

具有三个 imageView 的 MainActivity:

        ImageView imgView1 = (ImageView) findViewById(R.id.imgView1);
String visibilityStr= PublicSharedPreferences.getDefaults("keyVisibility1", getApplicationContext());

if (visibilityStr.equals("0"))
imgView1.setVisibility(View.INVISIBLE);
else
imgView1.setVisibility(View.VISIBLE);


ImageView imgView2 = (ImageView) findViewById(R.id.imgView2);
String visibilityStr= PublicSharedPreferences.getDefaults("keyVisibility2", getApplicationContext());

if (visibilityStr.equals("0"))
imgView2.setVisibility(View.INVISIBLE);
else
imgView2.setVisibility(View.VISIBLE);



ImageView imgView3 = (ImageView) findViewById(R.id.imgView3);
String visibilityStr= PublicSharedPreferences.getDefaults("keyVisibility3", getApplicationContext());

if (visibilityStr.equals("0"))
imgView3.setVisibility(View.INVISIBLE);
else
imgView3.setVisibility(View.VISIBLE);

和 SharedPreferences 类:

 public class PublicSharedPreferences {



public static void setDefaults(String key, String value, Context context) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor = prefs.edit();
editor.putString(key, value);
editor.commit();
}

public static String getDefaults(String key, Context context) {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
return preferences.getString(key, null);
}


}

它们运作良好。但问题是,当我点击 btn1 时,MainActivity 中的所有 imageView 都发生了变化(变得可见或不可见),或者当我点击 btn3 时,所有 imageView 都发生了变化。我希望 btn1 仅更改 imageView1,btn2 仅更改 imageView2,而 btn3 仅更改 imageView3,而不是其中一个按钮更改所有 imageView。我认为问题在于我只为所有这些定义了一个关键偏好。但我不知道如何为每个人定义特殊的 key 。我怎样才能做到这一点?请更改代码并重新编写。谢谢。

最佳答案

您对所有 3 个 if 使用 1 个变量!

为每个 Activity/ ImageView 制作不同的变量

      ImageView imgView1 = (ImageView) findViewById(R.id.imgView1);
//keyVisibility1
String visibilityStr= PublicSharedPreferences.getDefaults("keyVisibility1", getApplicationContext());

if (visibilityStr.equals("0"))
imgView1.setVisibility(View.INVISIBLE);
else
imgView1.setVisibility(View.VISIBLE);


ImageView imgView2 = (ImageView) findViewById(R.id.imgView2);
//keyVisibility2
visibilityStr= PublicSharedPreferences.getDefaults("keyVisibility2", getApplicationContext());

if (visibilityStr.equals("0"))
imgView2.setVisibility(View.INVISIBLE);
else
imgView2.setVisibility(View.VISIBLE);



ImageView imgView3 = (ImageView) findViewById(R.id.imgView3);
//keyVisibility3
visibilityStr= PublicSharedPreferences.getDefaults("keyVisibility3", getApplicationContext());

if (visibilityStr.equals("0"))
imgView3.setVisibility(View.INVISIBLE);
else
imgView3.setVisibility(View.VISIBLE);

(也将每个 Activity 更改为 keyVisibility1、keyVisibility2 和 keyVisibility3)

关于java - 定义 keyPreference 使 imageView 可见和不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41414760/

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