1

2 つのアクティビティを含むアプリケーションを開発しています。

  1. ユーザーがアプリを起動した場所で開始されるメイン アクティビティ。

  2. 2 番目のアクティビティは、ユーザーがホーム画面のボタン ウィジェットをクリックした場所で開始されます。

ウィジェットと、ユーザーがウィジェット ボタンをクリックしたときに表示されるビューを作成しました。

私の問題: 2 番目のアクティビティ UI がメイン アクティビティの上に表示されます。2 番目のアクティビティ レイアウトが透明であるため、メイン アクティビティが表示されます。これは、ウィジェットをクリックしたときにホーム画面を表示したままにしたいためです。

その下のメイン アクティビティを起動せずに、2 番目のアクティビティのみを起動するにはどうすればよいですか? マニフェスト ファイルからメイン アクティビティを削除しようとし<action android:name="android.intent.action.MAIN" />ましたが、ウィジェットは機能しますが、電話にアプリをインストールすると、アプリ アイコンがインストールされていないため、メイン アクティビティを起動できません。

私は私の問題を表明したことを願っています。

4

4 に答える 4

1

Activity2 番目を開始した直後に1 番目を終了する必要があります。Activity

startActivity(<secondActivity>);
finish();
于 2013-02-18T15:36:04.077 に答える
0

おそらく、2 番目のアクティビティに関連付けられた別のインテント アクションとインテント フィルターが機能するでしょう。ドキュメントをご覧ください。メモ帳アプリケーションの例は、やりたいことと似ているはずです。

于 2013-02-18T16:00:14.767 に答える
0

2 番目のアクティビティを開始した後、メインのアクティビティを終了することができます。

startActivity(secondActivity.class);
finish();

または、アプリケーション マニフェストで、メイン アクティビティに noHistory フラグを使用できるため、メイン アクティビティから離れると、finish 自体が呼び出されます。

android:noHistory="true"
于 2013-02-18T15:41:31.107 に答える
0

私はこのように私の問題を解決しました:

1-マニフェストファイルのメインアクティビティ属性に追加しました:

android:launchMode="singleTask"

この属性はアプリのキャッシュを消去せず、インテント インスタンスをメモリに保持するため、アクティビティを再起動する際の読み込み時間が通常よりも長くならないことをテストしました。

2-これをメインアクティビティクラスに追加します:

@Override
void onPause()
    {
    super.onPause();
    finish();
    }

ご協力ありがとうございました。

于 2013-02-18T16:18:35.867 に答える