2

アプリケーションには次のアクティビティ構造があります

アプリケーションが起動すると、単純な「スプラッシュ画面」アクティビティが開始されます(これを「スプラッシュ」と呼びます)。このアクティビティは、ユーザーがボタンを押すとメインアクティビティを開始します(これを「メイン」と呼びます)。

Mainは、メニューから2つのアクティビティを開始できます。最初のアクティビティは単純なフォームを表示し(これを「フォーム」と呼びます)、2番目のアクティビティはマップを表示するMapActivity(「マップ」と呼ばれます)です。

Main、Form、およびMapは、マニフェストでまったく同じように宣言されています。

<activity android:name="fully qualified activity class"
        android:screenOrientation="landscape"
     android:configChanges="keyboard|keyboardHidden|orientation"
    >
    <intent-filter>
        <action android:name="android.intent.action.DEFAULT" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

Mainがアクティブで、Formを起動して「戻る」を押すと、Mainが再び起動します。もう一度「戻る」を押すと「スプラッシュ」が表示されます。ここでは何も奇妙なことはありません。

ここで奇妙な部分があります。メインにいるときにマップを開始し、「戻る」を押すと、メインが期待どおりに表示されます。ただし、もう一度「戻る」を押すと、メインが再起動します。スプラッシュに戻るには、「戻る」を2回押す必要があります。

したがって、Mapアクティビティを開始すると、どういうわけかMainがアクティビティスタックに2回表示されますが、Formアクティビティは開始されないようです。

フォームとマップはどちらも次のように開始されます。

startActivity(new Intent(this, MyActivity.class));

私はどの活動でもバックキーをキャッチしません。

何が起こっているのか、またはこれをデバッグする方法についての手がかりはありますか?

4

1 に答える 1

0

私のプロジェクトの1つで、この動作を以前に見たことがあると思います。マニフェストファイルで、ランチャーアクティビティ(この場合はSplash)のlaunchModeプロパティを--android:launchMode="singleTask"に設定してみてください。

これは明確にするのに役立つはずです:http://developer.android.com/guide/topics/fundamentals.html#acttask

于 2010-04-23T12:07:34.583 に答える