我正在製作一個使用AsyncTask下載某些數據的Android應用程序。爲了讓我的代碼更具可讀性,我在一個單獨的類(「ContentManager」)上重新創建了這段代碼。但是,我不知道如何將其導入到我的主要活動中。將內部類導入Java主要活動的問題(Android)
這裏是我的主要活動,不工作的代碼(錯誤:「無法解析符號DownloadJson」):
public class MyApp extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_category_list);
ContentManager contentManager = new ContentManager();
ContentManager downloadJsonTask = new contentManager.DownloadJson();
downloadJson.execute("http://.../api/...");
}
}
而且這裏是我的AsyncTask代碼,生活在一個類文件(ContentManager。對Java比主活動同一個包文件夾):
public class ContentManager {
// DownloadJson is a class that gets a JSON response given a url specified on the call
public class DownloadJson extends AsyncTask<String,Void,String> {
@Override
protected String doInBackground(String... urls) {
// Defined required variables
String result = "";
URL url;
HttpURLConnection urlConnection = null;
// Try to download content
try {
url = new URL(urls[0]);
urlConnection = (HttpURLConnection)url.openConnection();
InputStream in = urlConnection.getInputStream();
InputStreamReader reader = new InputStreamReader(in);
int data = reader.read();
while (data != -1) {
char currentCharacter = (char)data;
result += currentCharacter;
data = reader.read();
}
return result;
}
catch(MalformedURLException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
return null;
}
}
}
如何導入一個內部類從另一個文件?這是做這件事的正確方法嗎?
我試圖ContentManager $ DownloadJson()downloadJson =新ContentManager $ DownloadJson();但它不起作用... – Victor
對不起,我的錯誤,這不適用於你。你應該調用'ContentManager.DownloadJson downloadJsonTask = contentManager.new DownloadJson();' – rastik