2012-01-17 53 views
1

與此代碼,我的計劃只是強制關閉(錯誤)我如何將一個數字/字符串存儲到R.string.xx中?

***public View x = findViewById(R.string.nfoname);*** 
@Override 
public void onCreate(Bundle savedInstanceState) {  
super.onCreate(savedInstanceState);  
setContentView(R.layout.information); 
//edittext 
***final EditText infoname=(EditText)findViewById(R.id.infoname);*** 

//clear,confirm 
Button clear = (Button)findViewById(R.id.buttonclear); 
Button confirm = (Button)findViewById(R.id.buttonconfirm); 

//clear button 
clear.setOnClickListener(new View.OnClickListener() {  
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     infoname.setText(""); 
    } 
}); 
//confirm button 
confirm.setOnClickListener(new View.OnClickListener() {  
    public void onClick(View v) { 

     ***x=(View) infoname.getText();*** 
    } 
}); 
} 

了一個與*是錯誤的來源

程序功能: 如果用戶點擊確認,他的名字將設置爲R.string.nfoname ,然後通過TextView x = setText(R.string.nfoname);

回答

2

我不確定是否可以將文本保存到R.string。這是編譯器爲您創建的生成類。它與你的apk包裝在一起。將資源看作翻譯的一種手段,並將文本呈現在屏幕上。

我想你想要做的是將用戶輸入保存爲SharedPreference或數據庫。

請參閱:SharedPreferences關於android文檔的示例用法。

+0

感謝, 我已經使用這個.. TextView的X =(TextView的)findViewById(); x.setText(「hello」+ getString(R.string.nfoname)); 它工作得很好,但如何設置字符串? 在我心中的一個抽象是類似於 idontknow x =(idontknow)findViewById(R.string.stringname); 這樣,只要我改變x的R.string.stringname也會改變 – 2012-01-17 02:12:33

+0

我想這是正確的,好吧關閉研究sharedpreferences – 2012-01-17 02:45:43

0

至少在變量infoname範圍的情況下,最有可能導致應用程序拋出錯誤。 infoname是函數onCreate()的局部變量,而不是類的實例變量,因此它不能被onClick()方法訪問,因爲它們是匿名類的一部分。

我會問的另一件事是爲什麼你標記infoname爲最終?當onCreate()退出時它超出了範圍,所以如果它被改變了,你可以看到誰改變了它,因爲它只在方法執行時存在。

0

您無法將值設置爲R.string.xxx,因爲所有這些值都是常量,非常像只讀內容。如果你要使用編輯文本的價值,另一個佈局使用類變量或intent.putextra()

來到UR源代碼,我看到這個

public View x = findViewById(R.string.nfoname); 

如何才能鑑於R.String發現?這應該是R.id.

final EditText infoname =(EditText)findViewById(R.id.infoname); 爲什麼這個editText必須是最終的?

***x=(View) infoname.getText();*** 

你只需要使用infoname.getText().toString()你會得到EDITTEXT當前的文本字符串值。 老兄,你可以做簡單的東西。

0
public View x = findViewById(R.string.nfoname); 

這可不行的不僅是你試圖找到一個View使用R.string資源ID,你setContenView(...)做之前它被稱爲在onCreate(...)方法。即使您使用了有效的View資源ID,例如R.id.infoname,那麼x將爲null,因爲內容視圖尚未虛增。

final EditText infoname=(EditText)findViewById(R.id.infoname); 

除了毫無意義的使用final這個should'nt只要R.id.infoname實際上是一個EditText的資源ID會出現問題。

x=(View) infoname.getText(); 

不僅將xnull,而是基於一個EditText調用getText()返回Editable這不是View也不可能將它轉換爲View。即使您使用getText().toString()這是從EditText獲取文本的正確方法,仍不可能將String轉換爲View

另外,作爲本...

TextView的X =的setText(R.string.nfoname);

它必須是...

TextView x = (TextView) findViewById(<some id>); 
x.setText(getString(R.string.nfoname)); 
相關問題