如何根据不同活动中ImageView的可见性更改一个活动中Button的可见性?

时间:2016-03-20 22:12:13

标签: android android-intent

我的应用程序允许用户通过在平面图上放置项目来设计露营车内部,然后我想要一个不同的活动来显示销售所选项目的网站的超链接。

我正在尝试使用Intents将图像的可见性传递给t4shop活动,然后根据此信息显示相关按钮。

平面图的活动是t4.java,链接的活动是t4shop.java。

要发送可见性状态,请在t4.java活动中输入

    @Override
    public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_t4);

    ImageView Evomotion = (ImageView) findViewById(R.id.evomotion);

    if (Evomotion.getVisibility() == View.VISIBLE)
    {
        Intent intent = new Intent(this, t4shop.class);
        intent.putExtra("makebuttonvisible", true);
        startActivity(intent);
    }

要接收可见性状态并更改t4shop.java中按钮的可见性,我将

    public Button evobutton;

    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_t4shop);
    evobutton = (Button) findViewById(R.id.evobutton);
    evobutton.setOnClickListener(this);

    if(getIntent().getBooleanExtra("makebuttonvisible", true)){
        evobutton.setVisibility(View.VISIBLE);
    }
    else {
        evobutton.setVisibility(View.INVISIBLE);
    }
}

目前这个代码只是显示按钮,我已经尝试了其他几种方法,但我对此非常陌生并继续绕过失败的圈子。

我是否需要在清单中或活动中的其他位置定义其他内容?

提前致谢,

史蒂夫

4 个答案:

答案 0 :(得分:0)

getBooleanExtra()的第二个参数是默认值,如果不存在额外的键,将返回该值。如果第一个ImageView内的Activity可见,则只传递额外内容,这意味着如果它不可见 - 则不会传递任何值。在第一种情况下,getBooleanExtra()将返回true - 这是您通过Intent传递的内容。在第二种情况下,它仍然是true,因为您根本没有传递任何值。解决方案是每次都明确传递值,即使ImageView不可见,或者默认值为false

答案 1 :(得分:0)

if(getIntent().getBooleanExtra("makebuttonvisible", true))始终是真的。 如果第二个参数“true”找不到BooleanExtra,则它是默认值。所以将它设置为false而不是true。

答案 2 :(得分:0)

尝试使用它来获取可见性值

 if(getIntent().getExtras().getBoolean("makebuttonvisible")){
        evobutton.setVisibility(View.VISIBLE);
    }
    else {
        evobutton.setVisibility(View.INVISIBLE);
    }

答案 3 :(得分:0)

更改

if(getIntent().getBooleanExtra("makebuttonvisible", true)){
        evobutton.setVisibility(View.VISIBLE);
    }
    else {
        evobutton.setVisibility(View.INVISIBLE);
    }

 if(getIntent().getBooleanExtra("makebuttonvisible", false)){
        evobutton.setVisibility(View.VISIBLE);
    }
    else {
        evobutton.setVisibility(View.INVISIBLE);
    }