私は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/...");
}
}
そしてここで、クラスファイル(ContentManagerに住んでいる私のAsyncTaskのコードは、です。メインアクティビティと同じパッケージフォルダにある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;
}
}
}
別のファイルから内部クラスをインポートするにはどうすればよいですか?これは正しい方法ですか?
をコンパイルするようになります。それは動作しません... – Victor
申し訳ありません、私の間違い、これはあなたに当てはまりません。あなたは 'ContentManager.DownloadJson downloadJsonTask = contentManager.new DownloadJson();'を呼び出す必要があります。 – rastik