我正在尝试从方法设置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));
我在做什么错了?
答案 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; 不必创建对象,这是一种很好的做法,我相信会更清楚