2

アクティビティクラスからインテントを起動しようとしています。

Intent i = new Intent(this, (Obscured)MapActivity.class);
    i.putExtra("stop", stop);
    this.startActivity(i);

そして、これが(Obscured)MapActivityの私のインテントレシーバーです:

Intent i = this.getIntent();
if (i != null && i.getSerializableExtra("stop") != null) {
        this.displayLocations();
        BusStop tempStop = new BusStop();
        tempStop = (BusStop) i.getSerializableExtra("stop");
        this.goToStop(tempStop);
    }

しかし、何らかの理由で起動していません。そのすぐ上に別のケースがあります:

if (i != null && i.getSerializableExtra("loc") != null) {
        this.displayLocations();
        this.goToLocation((Location) i.getSerializableExtra("loc"));
    }

これは問題なく機能し、インテントランチャーコードはほぼ完全に同じです。何か案は?

編集:私もSherlockListActivityを使用していますが、それが何かを変えるかどうかはわかりません。

<activity
        android:name=".(Obscured)MapActivity"
        android:configChanges="keyboardHidden|orientation|screenSize|uiMode|screenLayout"

私はより多くの情報を提供してうれしいです、これは今数時間私を悩ませています。

回答:問題が見つかりました。どういうわけかシリアライズ可能なエクストラ(ストップ)を追加すると壊れてしまいます。putExtra()をコメントアウトすると、機能します。問題は、GeoPointをシリアル化しようとしたことでした。

4

3 に答える 3

1

問題が見つかりました。どういうわけかシリアライズ可能なエクストラ(ストップ)を追加すると壊れてしまいます。setExtra()をコメントアウトすると、機能します。なぜそれが渡されないのかわかりませんが、クラスはシリアライズ可能に拡張されますが、私が試みるすべてはそれを再び壊します。

于 2012-09-21T18:46:23.147 に答える
0

それが役立つかどうかはわかりませんが、JavaDocsには、エクストラの名前にパッケージプレフィックスが必要putExtra()であると記載されています。

名前にはパッケージプレフィックスを含める必要があります。たとえば、アプリcom.android.contactsは「com.android.contacts.ShowAll」のような名前を使用します

于 2012-09-21T19:03:55.727 に答える
0

これをmanifest.xmlに追加します

<activity android:name=".MapActivity"
    android:configChanges="orientation|keyboardHidden" />
于 2012-09-19T18:31:43.677 に答える