[英]define keyPreference for make visible and invisible imageView
I have three Activities with one button in each of them. 我有三个活动,每个活动都有一个按钮。 Act1 with btn1, Act2 with btn2, and Act3 with btn3.
带有btn1的Act1,带有btn2的Act2和带有btn3的Act3。 I have another Activity as MainActivity with three imageViews: ImageView1, imageView2 and imageView3, all of which are initially invisible.
我还有另一个Activity作为MainActivity,它具有三个imageViews:ImageView1,imageView2和imageView3,它们最初都是不可见的。 I want it so when I click on btn1 in act1, imageView1 in MainActivity will be visible and when click on btn1 again, imageView1 will be invisible again.
我想要它,所以当我在act1中单击btn1时,MainActivity中的imageView1将可见,而再次单击btn1时,imageView1将再次不可见。 And similarly for imageView2 and imageView3.
同样适用于imageView2和imageView3。 I have this code so far:
到目前为止,我有以下代码:
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());
}
});
}
MainActivity with three imageViews: 具有三个imageViews的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);
and SharedPreferences class: 和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);
}
}
They work well. 他们运作良好。 But the problem is that when I click on btn1, all imageViews in MainActivity change (become visible or invisible) or when I click on btn3, all imageViews change.
但是问题是,当我单击btn1时,MainActivity中的所有imageViews都会更改(变为可见或不可见),或者当我单击btn3时,所有imageViews都会更改。 I want btn1 just changes imageView1 and btn2 just changes imageView2 and btn3 just changes imageView3, instead of one of the buttons changing all of the imageViews.
我希望btn1仅更改imageView1,而btn2仅更改imageView2,而btn3仅更改imageView3,而不是更改所有imageViews的按钮之一。 i think the problem is that i defined just one key Preference for all of them.
我认为问题是我为所有这些对象仅定义了一个关键的首选项。 but i dont know how i can define special key for each one.
但是我不知道如何为每个定义特殊键。 how can i do that?
我怎样才能做到这一点? please change the codes and write them again.
请更改代码,然后再次写入。 tnx.
tnx。
You use 1 variable for all the 3 if! 如果所有3个条件都使用1个变量!
make different variable for each 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);
(also change in each activity to keyVisibility1, keyVisibility2 and keyVisibility3) (还将每个活动更改为keyVisibility1,keyVisibility2和keyVisibility3)
make three static variable in separate class name Constant. 在单独的类名Constant中创建三个静态变量。 and initialize them with false
然后用false初始化它们
public class Constant() {
public static Boolean firstButton = false;
public static Boolean secondButton = false;
public static Boolean thirdButton = false;
}
now when you click on btn1, of your activity1, do this 现在,当您单击activity1的btn1时,执行此操作
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Constant.firstButton = !Constant.firstButton;
// start new Activity
}
});
now in your other activity. 现在正在您的其他活动中。 in your onCreateMethode just do that
在您的onCreateMethode中
imageView1.setVisibility(Constant.firstButton ? View.Visible: View.Gone);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.