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

感谢您的详细解释(当然,以解决问题) –