![](/img/trans.png)
[英]Android app crashes when using setVisibility(View.GONE);
[英]textview.setvisibility(View.GONE) when text is TextView
我正在嘗試從方法設置 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));
我究竟做錯了什么?
if (tview.getText() == "Textview")
將此行更改為..
if (tview.getText().toString().equals("Textview"))
你不能在字符串中使用 ==
改變
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;
}
}
我會寫這樣的方法:
private static int checkField(TextView tview){
return tview.getText().toString().equals("Textview") ? View.GONE : View.VISIBLE
}
如果您沒有得到預期的結果,請以一種或另一種方式嘗試調試並檢查 TextView.getText() 是否返回“TextView”作為值。
您可能想以這種方式重新編寫您的方法
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);
另外,為什么在靜態時將其設為私有? 私有不能與靜態一起使用,它要么是公共靜態,要么只是私有
你對 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() 檢查兩個對象是否相同並返回一個布爾值。
你也可以只做 return View.GONE; 或者返回 View.VISIBLE; 而不是必須創建一個對象,這是一個很好的做法,我相信更清楚一點
嘗試這個
if (txtView.getText().toString().equals("TextView")){
vis = View.GONE;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.