2016-03-14 17 views
5

Android N Developer Preview 1のドキュメントでは、Intent.FLAG_ACTIVITY_LAUNCH_ADJACENTを使用して、Androidが別のウィンドウ(フリーフォーム)または隣接するペイン(分割画面)にアクティビティを開始するようにリクエストできることが示されています。 Googleのサンプルコードでは、これを達成するためにIntent.FLAG_ACTIVITY_LAUNCH_ADJACENT | Intent.FLAG_ACTIVITY_NEW_TASKを使用しています。Android Nマルチウィンドウで別のウィンドウに同じアクティビティを起動するにはどうすればよいですか?

起動しているアクティビティが起動を行っているアクティビティと異なるクラスである場合、これは問題なく動作します。

したがって、たとえば、あなたが持っている場合は、次のコードを持っているMainActivityは自身の別のインスタンスを起動します

Intent i= 
    new Intent(this, MainActivity.class) 
     .setFlags(Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT | 
     Intent.FLAG_ACTIVITY_NEW_TASK); 

    startActivity(i); 

結果があるFLAG_ACTIVITY_LAUNCH_ADJACENTは無視され、新しいアクティビティのインスタンスは、に行くこと既存のウィンドウまたはペイン。

ただし、他のアクティビティ(例:SecondActivity.class)を開始すると、FLAG_ACTIVITY_LAUNCH_ADJACENTは広告として動作します。

ユーザーがアプリから2つのスプレッドシート、2つのメモ帳、または2つのメモ帳を開くことを許可するにはどうすればよいですか? FLAG_ACTIVITY_LAUNCH_ADJACENTを使用して、同じアクティビティの2つのインスタンスを起動するにはどうすればよいですか?

答えて

6

this issue上の議論によると、あなたもFLAG_ACTIVITY_MULTIPLE_TASKにブレンドする必要があります。

Intent i= 
    new Intent(this, MainActivity.class) 
     .setFlags(Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT | 
     Intent.FLAG_ACTIVITY_NEW_TASK | 
     Intent.FLAG_ACTIVITY_MULTIPLE_TASK); 

    startActivity(i); 

次に、2つのアクティビティのインスタンスが何/別のウィンドウ/ペインになります。

This sample projectは、私は、参照問題は正しくないと考えているNデベロッパープレビュー1.

+0

のためにこれを証明します。 #203404は 'android:minimalSize'(今は' android:minimalWidth')の欠陥を参照しています。 –

+1

@PaulLammertsma:申し訳ありません!私には多くの問題があります。私は正しいリンクで答えを更新しました。 – CommonsWare

+0

"たくさんの問題"が、b.android.comで除外されています! ;) –

関連する問題