在Java(Android)中在运行时使TextView可见

时间:2014-02-11 17:46:41

标签: java android

我有两项活动;第一个活动开始第二个活动,一些数据通过意图传递。

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条件,但它不会使任何视图可见。
我是否在试图让这些观点可见时犯了错误?

3 个答案:

答案 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等常量来显示和隐藏视图。它们更易于使用和理解。快乐的编码。 :)