そのため、スレッドを処理するために、Android アプリのいたるところにアクティビティとインテントを渡しています (コードがスパゲッティのようになり始めているため、これにはより良いパラダイムがあると確信しています。通常、私は正しいことをしていない)。
とにかく、私はこのようなことをしようとしています:
public class SomeCoolActivity extends Activity {
private class DoSomeTaskThatInvolvesEitherTheNetworkOrASleepStatementWithoutScrewingUpTheUiThread extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... params) {
// Do something useful on a non-UI thread...
return null;
}
@Override
protected void onPostExecute(Void result) {
// Now that's done, I need to progress to the next activity. If I do that here,
// I will get errors. So instead, I will call a method on my parent activity class:
loadNextActivity(NextActivity.class);
}
}
protected void loadNextActivity(Class<Activity> activityToLoad) {
startActivity(new Intent(this, activityToLoad));
}
}
しかし、これは機能しません。エラーがあることがわかります。
NextActivity.class
アクティビティではありません。はい、明らかにまったく同じクラスではありませんが、Activity から派生したクラス (NextActivity を含む) を渡すことができると期待されますが、そうでないクラスは渡せません (loadNextActivity を定義すると、実際には正常に動作します)。なので
protected void loadNextActivity(Class<?> activityToLoad)
しかし、それは理想的とは言えません。なぜなら、私が望むもの、おそらくアクティビティではない何かを渡すことができるからです...これはJavaであり、Rubyではありません)。それに、たった一学期しか合格できないとしたら……一体何の得があるんだ?
では、どうすればこれを機能させることができますか?