我有两项活动;第一个活动开始第二个活动,一些数据通过意图传递。
Intent i = new Intent(this,BActivity.class);
i.putExtra("identify", "c2f");
startActivityForResult(i, 1);
在第二个活动中,我想根据从第一个活动传递的信息,使一些TextViews / EditTexts可见(最初设置为不可见)。
以下是代码:
tv1 = (TextView)findViewById(R.id.textView2);
tv2 = (TextView)findViewById(R.id.textView3);
et1 = (EditText)findViewById(R.id.editText1);
et2 = (EditText)findViewById(R.id.editText2);
button = (Button)findViewById(R.id.send_result);
Bundle extras = getIntent().getExtras();
String identifier = extras.getString("identify");
if(identifier == "c2f")
{
tv1.setVisibility(0);
tv1.setText("Celcius");
et1.setVisibility(0);
}
else if(identifier == "f2c")
{
tv1.setVisibility(0);
tv1.setText("Fahrenheit");
et1.setVisibility(0);
}
else if(identifier == "currency")
{
tv1.setVisibility(0);
tv1.setText("Amount");
tv2.setVisibility(0);
tv2.setText("Conv. Rate");
et1.setVisibility(0);
et2.setVisibility(0);
}
现在,当第二个活动开始时,这些TextView或EditTexts似乎都不可见!
identifier(string)保存从第一个活动传递的正确值,它甚至进入if条件,但它不会使任何视图可见。
我是否在试图让这些观点可见时犯了错误?
答案 0 :(得分:5)
使用.equals
代替==
进行字符串比较。您还可以在带引号的字符串后使用该变量以避免nullpointer。你可以使用TextView.VISIBLE
,它是一个常量来使它可见。
if("c2f".equals(identifier))
{
tv1.setVisibility(TextView.VISIBLE);
tv1.setText("Celcius");
et1.setVisibility(TextView.VISIBLE);
}
答案 1 :(得分:2)
只需使用View
的常量即可。
your_view.setVisibility(View.VISIBLE);
这会使View
可见。
your_view.setVisibility(View.INVISIBLE);
这将使其不可见,但仍然可以看到布局(基本上,它所在的空间保持不变)
your_view.setVisibility(View.GONE);
这会让你的View
消失,就像它从未存在过一样!
答案 2 :(得分:2)
正如giacomoni所指出的,请使用equals进行字符串比较。这是一个解释原因的链接。 http://javarevisited.blogspot.in/2012/03/how-to-compare-two-string-in-java.html
此外,尝试使用标准的View.VISIBLE等常量来显示和隐藏视图。它们更易于使用和理解。快乐的编码。 :)