![](/img/trans.png)
[英]Wrong return from R.string using Robotium .getString() method
[英]Android: getString(R.string) in static method
在為 Android 編程時,有時您必須使用靜態方法。 但是,當您嘗試使用getString(R.string.text)
以靜態方法訪問資源時,您將收到錯誤消息。 讓它靜態不起作用。
有誰知道解決這個問題的好方法? Android 中的資源文件對於創建不同語言的內容或更改文本非常有幫助。
一種或另一種方式,你需要一個 Context ......對於靜態方法,這可能意味着你需要在調用它們時傳遞一個 Context 。
你可以使用Resources.getSystem().getStringArray(android.R.array.done);
這就是我從靜態方法內部訪問資源的方式。 也許不理想,但是。
首先,我擴展 Application 並設置一些公共靜態字段,並創建一個方法來初始化它們:
public class MyApp extends Application {
// static resources
public static String APP_NAME;
public static void initResources(Context context) {
APP_NAME = context.getResources().getString(R.string.app_name);
}
}
在我的清單中,我注冊了擴展應用程序:
<application
android:name=".MyApp"/>
在我的啟動活動 (MainActivity) 中,我調用初始化靜態資源:
@Override
protected void onCreate(Bundle savedInstanceState) {
MyApp.initResources(this);
}
然后在你的項目中的任何地方,在 MainActivity.onCreate(Bundle b) 運行后,你可以調用訪問你指定靜態資源的靜態方法:
public static void printAppName() {
Log.w("tag", "my app name: " + MyApp.APP_NAME);
}
將Context
(即Activity
)實例作為參數對象傳遞給靜態方法。 然后對參數調用getString
。
下面的帖子提供了創建Application
類以保存當前上下文的提示。 然后可以從任何其他靜態方法訪問您的新Application
類。
一種方法是您可以將上下文傳遞給靜態方法。 看看這個它絕對有效
public class Sounds {
public static MediaPlayer getSoundTouch(Context context){
return MediaPlayer.create(context, R.raw.touch);
}
public static MediaPlayer getSoundLeak(Context context){
return MediaPlayer.create(context, R.raw.leak);
}
public static MediaPlayer getSoundFinish(Context context){
return MediaPlayer.create(context, R.raw.finish);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.