我的应用程序允许用户通过在平面图上放置项目来设计露营车内部,然后我想要一个不同的活动来显示销售所选项目的网站的超链接。
我正在尝试使用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);
}
}
目前这个代码只是显示按钮,我已经尝试了其他几种方法,但我对此非常陌生并继续绕过失败的圈子。
我是否需要在清单中或活动中的其他位置定义其他内容?
提前致谢,
史蒂夫
答案 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);
}