2013-01-23 28 views
2

我想從我的strings.xml文件中的事件處理程序中獲取一個字符串,雖然我得到「沒有這樣的靜態字段」。Context.getString導致「沒有這樣的靜態字段」

這裏是我的代碼:

mSearchEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
     @Override 
     public void onFocusChange(View view, boolean hasFocus) { 
      Context context = view.getContext(); 

      if (hasFocus && mSearchEditText.getText().toString().trim() == context.getString(R.string.searchbar_address_label)) { 
       mSearchEditText.setText(""); 
      } 
      else if (!hasFocus && mSearchEditText.getText().toString().trim().isEmpty()) { 
       mSearchEditText.setText(context.getString(R.string.searchbar_address_label)); 
      } 
     } 
    }); 

什麼是錯的代碼?

感謝

UPDATE:此代碼是爲了展示裏面的EditText暗示。 R.string似乎在偵聽器函數內不可用。所以,我認爲我的問題是「是否有一種原生的方式在EditText中顯示提示,而不是編寫自己的代碼?」

+0

我認爲錯誤不在getString方法中,因爲如果我檢查R.string.search_address_label的值,錯誤也會發生。 –

+0

您是否正在嘗試在用戶輸入edittext時刪除文本? – skygeek

+0

這是我的意圖與此代碼。我不知道edittext有一個提示屬性,它以這種方式工作。 –

回答

2

使用context.getResources().getString(R.string.searchbar_address_label);

設置在XML佈局提示使用android:hint="your_text" 。或者可以使用edittext.sethint(「text」)以編程方式完成相同的操作。

+0

作爲上面的代碼,相同的錯誤 –

+0

是在運行時或在代碼? – skygeek

+0

錯誤出現在運行時。看起來我沒有在事件處理程序中訪問R.string,因爲它在setOnFocusChangeListener之外工作。 –

1

在這種情況下,重建項目和從設備上卸載應用程序可能會有所幫助。 它爲我工作。

相關問題