Heya-onPostExecute()でAsyncTaskを拡張するクラスからstartActivity()を呼び出そうとしています。
フローは次のとおりです。
AsyncTaskを拡張するクラス:
protected void onPostExecute() {
Login login = new Login();
login.pushCreateNewOrChooseExistingFormActivity();
}
アクティビティを拡張するクラス:
public void pushCreateNewOrChooseExistingFormActivity() {
// start the CreateNewOrChooseExistingForm Activity
Intent intent = new Intent(Intent.ACTION_VIEW);
**ERROR_HERE*** intent.setClassName(this, CreateNewOrChooseExistingForm.class.getName());
startActivity(intent);
}
そして、私はこのエラーを受け取ります…毎回:
03-17 16:04:29.579: ERROR/AndroidRuntime(1503): FATAL EXCEPTION: main
03-17 16:04:29.579: ERROR/AndroidRuntime(1503): java.lang.NullPointerException
03-17 16:04:29.579: ERROR/AndroidRuntime(1503): at android.content.ContextWrapper.getPackageName(ContextWrapper.java:120)
03-17 16:04:29.579: ERROR/AndroidRuntime(1503): at android.content.ComponentName.(ComponentName.java:62)
03-17 16:04:29.579: ERROR/AndroidRuntime(1503): at android.content.Intent.setClassName(Intent.java:4850)
03-17 16:04:29.579: ERROR/AndroidRuntime(1503): at com.att.AppName.Login.pushCreateNewOrChooseExistingFormActivity(Login.java:47)
iOS開発者の場合-私は新しいViewControllerをナビゲーションコントローラーのスタックにプッシュしようとしていますpushViewController:animated:
。どうやら-このプラットフォームで行うのは難しいです。
何か案は?前もって感謝します!
更新-修正済み:
@Falmarriのアドバイスによると、私はなんとかこの問題を解決することができました。
まず第一に、私はもはやLogin login = new Login();
新しいログインオブジェクトを作成するために呼び出していません。悪い。悪い。悪い。クッキーはありません。
代わりに、を呼び出す準備をするときに.execute()
、このチュートリアル(appfulcrum.com/?p=126)は、以下に示すように、私の目的のために、アプリケーションコンテキストをクラスに渡してAsyncTaskを実行することを提案します。
CallWebServiceTask task = new CallWebServiceTask();
// pass the login object to the task
task.applicationContext = login;
// execute the task in the background, passing the required params
task.execute(login);
これで、でonPostExecute()
、次のようなログインオブジェクトメソッドにアクセスできます。
((Login) applicationContext).pushCreateNewOrChooseExistingFormActivity();
((Login) applicationContext).showLoginFailedAlert(result.get("httpResponseCode").toString());
...
これが他の誰かに役立つことを願っています!特にiOS開発者はAndroidに移行しています...