Android コードは単純です。
public void createNewTask(View v) {
try {
MyTask task = MyTask.class.newInstance();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
private class MyTask extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... params) {
return null;
}
}
ただし、メソッドを呼び出すcreateNewTask
と、例外がスローされます。
Caused by: java.lang.RuntimeException:
java.lang.InstantiationException: com.example.MyActivity$MyTask
at com.example.MyActivity.createNewTask(MyActivity.java:214)
... 14 more
Caused by: java.lang.InstantiationException: com.example.MyActivity$MyTask
at java.lang.Class.newInstanceImpl(Native Method)
at java.lang.Class.newInstance(Class.java:1440)
at com.example.MyActivity.createNewTask(MyActivity.java:211)
しかし、別のクラスを選択した場合、たとえば
MyActivity task = MyActivity.class.newInstance();
何もかも良くなるだろう。
私のコードのどこが間違っていますか? Android 2.3.6を搭載したAndroid携帯でテストしました。