簡體   English   中英

textview.setvisibility(View.GONE) 當文本為 TextView 時

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM