0

次の問題の解決策を見つけようとしましたが、成功しませんでした。ログに記録する必要のあるWebページ(プレゼンテーション)(ユーザーが入力した内容、期間など)を表示するアクティビティクラスがあります。一部のページには、新しいプレゼンテーションを開くためのボタンがあります。呼び出しアクティビティ-CLMWebView.class:

Intent intent = new Intent(this, CLMWebView.class);
this.startActivity(intent);

これらのコード行の間にいくつかのintent.putExtraがありますが、これは私が信じていることですが、これには関係ありません。ご覧のとおり、呼び出し元のアクティビティと同じクラスで新しいアクティビティを開始しようとしています。ただし、何も起こりません。何か案は?

編集:CLMWebView.classのAndroidマニフェスト

<activity android:name="com.msoft.views.CLMWebView"
    android:configChanges="orientation|keyboard" 
    android:icon="@drawable/svicon" 
    android:launchMode="singleTop">
        <intent-filter>
            <action android:name="android.intent.action.PICK"/>
            <action android:name="android.intent.action.CHOOSER" />
            <action android:name="android.intent.action.WEB_SEARCH" />
        </intent-filter>
</activity>
4

1 に答える 1

1

singleTop活動、可視、および同じタスク内は再作成されません。

公式ドキュメントを引用:

同様に、「singleTop」アクティビティの新しいインスタンスを作成して、新しいインテントを処理することもできます。ただし、ターゲット タスクのスタックの最上位に既にアクティビティの既存のインスタンスがある場合、そのインスタンスは (onNewIntent() 呼び出しで) 新しいインテントを受け取ります。新しいインスタンスは作成されません。その他の状況 - たとえば、"singleTop" アクティビティの既存のインスタンスがターゲット タスクにあるがスタックの一番上にない場合、またはスタックの一番上にあるがターゲット タスクにない場合 -新しいインスタンスが作成され、スタックにプッシュされます。

より良い代替手段は、機能をフラグメントに配置し、毎回新しいフラグメントをバックスタックに追加することです。

于 2012-11-08T08:48:09.633 に答える