当文本是TextView时,textview.setvisibility(View.GONE)

时间:2018-10-06 21:40:30

标签: java android

我正在尝试从方法设置textview可见性

if textview.getText() == "Textview"

然后我希望它消失

这是返回可见性的方法:

private static int checkField(TextView tview){
    int vis;
    if (tview.getText() == "TextView"){
            vis = View.GONE;
            return vis;
    }
    else{
        vis = View.VISIBLE;
        return vis;
    }
}

这是我用来设置可见性的方法:

newView.setVisibility(checkField(newView));

我在做什么错了?

5 个答案:

答案 0 :(得分:0)

  if (tview.getText() == "Textview")

将此行更改为..

  if (tview.getText().toString().equals("Textview"))

答案 1 :(得分:0)

您不能在字符串中使用==

更改

if (tview.getText() == "TextView"){

if (tview.getText().equal("TextView")){

所以所有方法都是:

private static int checkField(TextView tview){
    int vis;
if (tview.getText().equal("TextView")){
            vis = View.GONE;
            return vis;
    }
    else{
        vis = View.VISIBLE;
        return vis;
    }
}

答案 2 :(得分:0)

我会这样写方法:

private static int checkField(TextView tview){
    return tview.getText().toString().equals("Textview") ? View.GONE : View.VISIBLE
}

如果无法获得预期的结果,请尝试一种或另一种方式,请尝试调试并检查TextView.getText()是否返回“ TextView”作为值。

答案 3 :(得分:0)

您可能希望以此方式重新编写方法

public static void checkField(TextView tview, TextView newView){
    String s = tview.getText().toString();
    if ( s.equals("TextView")){
        newView.setVisibility(View.GONE);
        return vis;
    } else {
    newView.setVisibility(View.VISIBLE);
    }
}

您可以通过这种方式使用该方法;

checkField(tview, newView);

此外,为什么在静态的时候将其设为私有?私有不能和静态一起使用,它要么是公共静态的,要么只有私有的

答案 4 :(得分:0)

您对TextView的比较是不正确的,第一个问题是您没有使用getText()。toString(),因此我相信您会获得与期望值不同的值

if (tview.getText() == "TextView"){
        vis = View.GONE;
        return vis;
}

您需要做的是首先将其更改为getText()。toString(),然后比较它们是否是相同的字符串,为此,您需要使用compareTo或compareToIgnoreCase方法

if (tview.getText().toString().compareTo( "TextView") == 0){
        vis = View.GONE;
        return vis;
}

这是来自文档!

compareTo:按字典顺序比较两个字符串。 等于:将此字符串与指定对象进行比较。

compareTo比较两个字符串的字符(在同一索引处),并相应地返回一个整数(正数或负数)。 ... equals()检查两个对象是否相同,并返回一个布尔值。

您也可以做      返回View.GONE; 要么     返回View.VISIBLE; 不必创建对象,这是一种很好的做法,我相信会更清楚