2011-02-24 39 views
0

到目前爲止,我只是通過在方法中輸入名字來編寫我的Android應用程序。我現在整理了這一點,經歷並把這些變成string.xml而不是引用和使用字符串:靜態上下文中的Android toString方法

txt.setText(this.getString(R.string.string_name)); 

然而,當試圖在靜態情況下使用這個(公共靜態無效的),它不工作,並給出錯誤。

有沒有人有任何指導如何克服這一點?我對Java/Android編程相當陌生,這是我第一次遇到這個問題。任何幫助深表感謝。

額外的代碼:

public static void ShowCatAddedAlert(Context con) 
{ 
AlertDialog.Builder builder=new AlertDialog.Builder(con); 
builder.setTitle("Add new Category"); 
builder.setIcon(android.R.drawable.ic_dialog_info); 
DialogListner listner=new DialogListner(); 
builder.setMessage("Category Added successfully"); 
builder.setPositiveButton("ok", listner); 

AlertDialog diag=builder.create(); 
diag.show(); 

}

+0

請顯示您的完整代碼。 – user432209 2011-02-24 00:16:24

+1

+1顯示更多的代碼。在你當前的行中,你不能調用'getString()'或者引用'TextView',這可能是一個靜態上下文中的實例變量。我們需要更多的上下文來幫助解決實際問題。 – Devunwired 2011-02-24 00:25:33

+0

對不起,現在全部添加 - 這是我的Toasts類。 – user319940 2011-02-24 00:27:35

回答

1

作爲所有資源的字符串資源都是通過Context實例(通常是Activity實例或Application實例)從應用程序中解析出來的。在靜態上下文中,除非將它們傳遞給靜態方法,否則沒有任何實例。

無論如何,你需要在非靜態環境下做一些事情。要麼保留Resources對象的副本並將其傳遞給靜態方法,要麼傳遞一個可以解析資源的Context實例,或者在靜態方法之前的某個時刻設置一個靜態Resources對象打電話。

這就是說,你可能想重溫一下你是否絕對需要這些方法是靜態的。

相關問題