java - 通过按钮使imageView可见和不可见

标签 java android

我有三个 Activity ,每个 Activity 都有一个按钮。 Act1btn1Act2btn2 以及 Act3btn3 。我有另一个 Activity 作为 MainActivity,具有三个 imageView:ImageView1imageView2imageView3,所有这些最初都是不可见的。我希望这样当我在 act1 中单击 btn1 时,MainActivity 中的 imageView1 将可见,当再次单击 btn1 时,imageView1 将再次隐形。 imageView2imageView3 也类似。 到目前为止我有这个代码:

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("keyVisibility", 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("keyVisibility", 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("keyVisibility", 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("keyVisibility", 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("keyVisibility", 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("keyVisibility", visibilityStr, getApplicationContext());
    }
});
}

具有三个 imageView 的 MainActivity:

    ImageView imgView1 = (ImageView) findViewById(R.id.imgView1);
String visibilityStr= PublicSharedPreferences.getDefaults("keyVisibility", 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("keyVisibility", 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("keyVisibility", getApplicationContext());

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

它们工作得很好。但问题是,当我点击btn1时,MainActivity中的所有imageView都会改变(变得可见或不可见),或者当我点击btn3时,所有imageView都会改变。我想要它,所以btn1只需更改imageView1btn2只需更改imageView2btn3只是更改imageView3,而不是更改所有 imageView 的按钮之一。我怎样才能做到这一点?哪部分代码是错误的?

最佳答案

问题是你只有 1key Preference 和所有 keyVisibility,所以当你点击任何按钮时,这个键会根据你的代码更改为 1 或 0

这里

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

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


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

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



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

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

当然,您应该更改 act1、act2 和 act3 上的 keyVisibility

关于java - 通过按钮使imageView可见和不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41398336/

相关文章:

java - 如何在 Spring Boot 项目中禁用 Hibernate 验证

java - 从 WAS 6.1 迁移到 WAS 7.0 的问题 cookie 始终为空

android - kotlin 继承是如何工作的?以及如何使用 "*"、 "in"和 "out"

android - 通过代码设置所选项目时如何禁用要调用的onItemSelectedListener

android - renderscriptSupportModeEnabled 在 android studio 中给出错误

java - 是否可以在 Gradle 中创建原型(prototype)?

java - 在MySQL中对表列进行计算

java - 接受 0.5 和整数的正则表达式

android - 查看可见性状态 GONE 占用屏幕空间

android - PagerTabStrip 未显示