2016-09-02 33 views
2

私のMainActivityは、Android Nの新しいマルチウィンドウモードをサポートしています。しかし、私はAwesomeActivityがマルチウィンドウをサポートしないようにしたいと思います。マルチウィンドウをサポートしない新しいアクティビティの開始

Iは、以下を試してみました:

のAndroidManifest.xml

<activity 
    android:name=".activities.MainActivity" 
    android:label="@string/app_name" 
    android:windowSoftInputMode="stateHidden"/> 
<activity android:name=".activities.AwesomeActivity" 
    android:resizeableActivity="false" /> 

MainActivity.java

Intent intent = new Intent(this, AwesomeActivity.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent); 
//removing CLEAR_TOP and SINGLE_TOP has no effect either 
//Intent.FLAG_ACTIVITY_CLEAR_TASK in conjunction with Intent.FLAG_ACTIVITY_NEW_TASK does not have an effect either 

IはIntent.FLAG_ACTIVITY_NEW_TASKを加えることによって(を伴うまたはIntent.FLAG_ACTIVITY_CLEAR_TASK無しと考え)、これは、AwesomeActivityは自分自身のタスクスタックのルートアクティビティであるため、AwesomeActivityでマルチウィンドウモードにすることはできません。

しかし、これはうまくいかず、私はまだAwesomeActivityからマルチウィンドウモードに切り替えることができますが、これは目的の動作ではありません。

Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_MULTIPLE_TASKの組み合わせは、AwesomeActivityを起動するように見えますが、これは動作しません。つまり、AwesomeActivityでアプリをバックグラウンドに置き、AwesomeActivityをフォアグラウンドに戻すと、タスクスタックから消去されたMainActivityに戻ります。私はほとんどの場合、MainActivityに戻ることができるようにしたいと考えていますので、この解決策では十分ではありません。

+0

あなた 'targetSdkVersion'は何ですか? 'CLEAR_TOP'と' SINGLE_TOP'(これはAFAIK、あなたはここでは必要ありません)を削除すると何か変わるのですか? – CommonsWare

+0

'CLEAR_TOP'と' FLAG_ACTIVITY_SINGLE'を削除しましたが、それでも動作しません。 – Vinnie

+0

@CommonsWare TargetSdkVersion is 24 – Vinnie

答えて

-1

私は アンドロイドを確認していない、これを追加してみてください:

resizeableActivityは= "false" を支援https://developer.android.com/guide/topics/ui/multi-window.html#overview

+1

質問でわかるように、彼はすでに彼の活動のために 'android:resizeableActivity =" false "'を設定しています – Michael

+0

このタグは、あなたはアプリケーションのタグにこれを適用しようとしましたか?つまり、

+0

はい、私はマルチウィンドウを無効にしたくありません。アプリ全体 – Vinnie

0

FLAG_ACTIVITY_NEW_TASKために、このリンクを確認してくださいは不十分であるように思われます。 FLAG_ACTIVITY_NEW_TASKFLAG_ACTIVITY_MULTIPLE_TASK作品の両方を使用する:

 startActivity(new Intent(MainActivity.this, ActivityTwo.class) 
     .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_MULTIPLE_TASK)); 
+0

これを行う場合は、ActivityTwo中にバックグラウンドでアプリを入れてから、フォアグラウンドに戻してから、ソフト戻るボタンを押してください。 MainActivityがタスクスタックから消去されたため、アプリケーションが終了します。これは望ましい動作ではありません。 – Vinnie

+0

@Kaleb:さて、BACKはあなたを仕事の中に戻します。あなたは 'android:taskAffinity'(この場合、' FLAG_ACTIVITY_MULTIPLE_TASK'は必要ありません)を使って他のタスクを見えるようにすることができますが、サイズ変更不可能なタスクの中のBACKはあなたを破棄するときにデフォルトでホーム画面に戻りますタスクルート。ユーザーをどこか他の場所に誘導するには、 'AwesomeActivity'の' onBackPressed() 'でいくつかの素晴らしい宣言をしなければなりません。または、両方のアクティビティのサイズを変更できないようにするか、両方のアクティビティをサイズ変更可能にします。私はここで他のオプションを認識していない。 – CommonsWare

関連する問題