2016-02-19 34 views
0

之外,我可以使用:如何使用新的URL資源主類

mWebView.loadUrl(getString(R.string.web_app_url)); 

與佈局在我的Android應用程序沒有任何問題相關的主要類別中,但是當我嘗試使用它另一個類在同一個Java文件中,我遇到了問題。

我如何使用一個變量聲明中的字符串資源如下(示例代碼最後一行):

class BlueBadgeParkingDotComReachableTest extends AsyncTask<Void, Void, Boolean> { 
    private PreLoadChecks activity; 

    BlueBadgeParkingDotComReachableTest(PreLoadChecks activity){ 
     this.activity = activity; 
    } 

    @Override 
    protected Boolean doInBackground(Void... params) { 
     int statusCode = -1; 
     String returnedContent = ""; 
     try{ 
      URL url = new URL(getString(getClass().getResource(R.string.web_app_status_url))); 

要開始使用getString方法不是本類中的認可和通常的處理辦法建議不要在Studio中彈出,而我一直在爲此掙扎數週,不得不使用硬編碼的URL字符串。

+0

只要做'getString(R.string.web_app_status_url)'。 –

+0

您是否嘗試過使用 URL url = new URL(activity.getString(getClass()。getResource(R.string.web_app_status_url))); 您需要getString的上下文。 – LoveForDroid

+0

@LoveForDroid你明白了。希望最終我會得到他們稱之爲Java的東西的竅門 - 現在我所嘗試的所有東西都會看起來像這樣簡單,但與我用過的其他語言相比,它看起來很陌生。 (如果你將這個問題作爲答案發布,我會接受) –

回答

2

getString()需要Context。大多數情況下,您可以在延伸Activity的課程中調用此課程。由於Activity延伸Context,您可以免費獲得該方法。如果需要從另一個班級撥打getString(),則必須明確使用ActivityContext對象。幸運的是,你有一個在你的AsyncTask,所以你可以做

activity.getString(...) 

現在你只需要得到括號正確的事情。請記住,在Android字符串資源中引用了R.string中的標識符。這意味着你需要做

activity.getString(R.string.web_app_status_url) 
+0

感謝您的詳細解釋(當然,以解決問題) –