1

最初の 3 つのボタンについては同じアクティビティを開始し、他の 3 つのボタンについては別の新しいアクティビティを開始します。

同じアクティビティから同じアクティビティを開始できないため、最初のボタンをクリックしてから同じアクティビティを開始する2番目のボタンをクリックすると問題が発生します。

したがって、開始しようとしているアクティビティが実行中のアクティビティと同じであることを知る必要があるだけです。それに基づいて、同じアクティビティの場合は、いくつかの UI コンテンツを更新するだけで、そうでない場合は新しいアクティビティを開始します。

誰でも私がこれを知るのを助けることができますか?

4

2 に答える 2

0

たとえば、アクティビティのクラスを確認できます(「this」が現在のアクティビティであると仮定します)。

if (this instanceof ActivityClassYouGoingToStart) {
    // update UI
} else {
    // start new activity
}
于 2013-01-09T07:33:41.727 に答える
0

これは、アクティビティ マネージャーを使用して行う良い方法です。基本的に、runningTasks はアクティビティ マネージャーから取得します。現在アクティブなタスクが常に最初に返されます。そこから topActivity を取得できます。

例はこちら

ActivityManager サービスから実行中のタスクのリストを取得する簡単な方法があります。電話で実行されているタスクの最大数を要求できます。デフォルトでは、現在アクティブなタスクが最初に返されます。

それができたら、リストから topActivity を要求して ComponentName オブジェクトを取得できます。

これが例です。

ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);



     // get the info from the currently running task
     List< ActivityManager.RunningTaskInfo > taskInfo = am.getRunningTasks(1); 

     Log.d("topActivity", "CURRENT Activity ::"
             + taskInfo.get(0).topActivity.getClassName());

     ComponentName componentInfo = taskInfo.get(0).topActivity;
   componentInfo.getPackageName();

マニフェストには次の権限が必要です。

uses-permission android:name="android.permission.GET_TASKS"
于 2013-01-09T07:29:59.060 に答える