私はA、B、Cと呼べる3つのアクティビティを持っています。私はA - > B - > C - > Aのように3つの間で情報を渡したいと思います。 Aで、バンドルが渡されているかどうかをチェックしたい(最初の起動時には、たとえば1つもない)。 データは、通常のバンドルでA-Bから渡されます。 - Bから> CIは、これを使用する:それは、受信された後、このように前方へ送られるAndroidの3つのアクティビティ間のバンドル
Intent i = new Intent(getApplicationContext(), FlashcardView.class);
i.putExtra("rattning", rattning);
i.putExtra("noqs", noqs);
i.putExtra("categoryid", categoryid);
CreateTestView.this.finish();
startActivityForResult(i, 0);
:
それはこのようにAで受信されIntent data = new Intent(FlashcardView.this, MenuView.class);
data.putExtra("point", point);
data.putExtra("noqs", noqs);
setResult(RESULT_OK, data);
finish();
:
@Override
protected void onActivityResult(int req, int resp, Intent data) {
super.onActivityResult(req, resp, data);
// process your received "data" from GameActivity ...
Bundle b = getIntent().getExtras();
noqs = b.getInt("noqs");
point = b.getInt("point");
mTvCat.setText("hhhhhh"+point+noqs);
publishOnFacebook(point,noqs);
}
C - > Aから途中でバンドルが失われているようですが。私がC - > Bから戻ってきた時、問題はなかった。私はこれが起こると思います。なぜなら、BはCを起動するアクティビティだから、CはAではなくBに落ちます。私はB上でfinish()を呼び出すことで回り道を作ったので、Cは代わりにAに戻ります。これを行うことで、私はバンドルを失う。または少なくとも私はそう考える。
誰もこれまで見たことがありますか?これを行うより良い方法はありますか? 2つ以上のアクティビティ間で渡す際にバンドルを失うのを防ぐにはどうすればよいですか?ありがとう!
編集:
編集:ここでは、放送を受信すると、エラーコードは次のとおりです。
03-07 12:57:59.394: ERROR/AndroidRuntime(803): java.lang.RuntimeException: Error receiving broadcast Intent { act=my_action (has extras) } in [email protected]
03-07 12:57:59.394: ERROR/AndroidRuntime(803): at android.app.ActivityThread$PackageInfo$ReceiverDispatcher$Args.run(ActivityThread.java:981)
03-07 12:57:59.394: ERROR/AndroidRuntime(803): at android.os.Handler.handleCallback(Handler.java:587)
03-07 12:57:59.394: ERROR/AndroidRuntime(803): at android.os.Handler.dispatchMessage(Handler.java:92)
03-07 12:57:59.394: ERROR/AndroidRuntime(803): at android.os.Looper.loop(Looper.java:143)
03-07 12:57:59.394: ERROR/AndroidRuntime(803): at android.app.ActivityThread.main(ActivityThread.java:5068)
03-07 12:57:59.394: ERROR/AndroidRuntime(803): at java.lang.reflect.Method.invokeNative(Native Method)
03-07 12:57:59.394: ERROR/AndroidRuntime(803): at java.lang.reflect.Method.invoke(Method.java:521)
03-07 12:57:59.394: ERROR/AndroidRuntime(803): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
03-07 12:57:59.394: ERROR/AndroidRuntime(803): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
03-07 12:57:59.394: ERROR/AndroidRuntime(803): at dalvik.system.NativeStart.main(Native Method)
03-07 12:57:59.394: ERROR/AndroidRuntime(803): Caused by: java.lang.NullPointerException
03-07 12:57:59.394: ERROR/AndroidRuntime(803): at com.crystalcodeab.Flashcard.MenuView$1.onReceive(MenuView.java:56)
03-07 12:57:59.394: ERROR/AndroidRuntime(803): at
これは正しいと思います。しかし、私は以前と同じAでNullPointerExceptionを取得します。放送がどこに行くのかを指定する方法はありますか?それとも受信機が登録されるまで「空中」ですか? – kakka47
NullPointerExceptionを示すlogcatの行を投稿できますか?ブロードキャストは、一致するインテントフィルタを受信するすべての人のために放送されます。ブロードキャストがどこから送信されるのかを指定することはできません。 –
私は今、開発者のドキュメントで、ブロードキャスト受信機を指定する必要がないことを読んでいます。インテントフィルタを誤って追加したか、マニフェストの受信者を正しく指定していない可能性があります。 – kakka47