onActivityResult не выполняется, если у намерения есть Intent.FLAG_ACTIVITY_NO_HISTORY - PullRequest
2 голосов
/ 26 июля 2011

A.java

public class A extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Log.d(A.class.getName(), "OnCreate");

        Intent intentB = new Intent(this, B.class);
        intentB.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
        startActivity(intentB);
    }
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        Log.d(A.class.getName(), "onActivityResult");
    }
}

B.java

public class B extends Activity {

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Log.d(B.class.getName(), "OnCreate");

        Intent imagesIntent = new Intent(Intent.ACTION_GET_CONTENT);
        imagesIntent.setType("image/*");
        Intent openGalleryIntent = Intent.createChooser(imagesIntent, "pic");
        startActivityForResult(openGalleryIntent, 2);
    }

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        Log.d(B.class.getName(), "onActivityResult");
        Log.d(B.class.getName(), data.getData().toString());
    }

}

AndroidMenifest.xml

<uses-sdk android:minSdkVersion="8" />

    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".A"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name="B"></activity>

    </application>

Проблема заключается в том, что после выбора изображения из галереи метод onActivityResult () класса B не выполняется.

Хотя если intentB.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY) удаляется из экземпляра intentB, то onActivityResult () класса B выполняется нормально.

1 Ответ

2 голосов
/ 26 июля 2011

Это правильное поведение. Когда вы выбираете FLAG_ACTIVITY_NO_HISTORY в качестве флага при вызове следующего действия. Дочернее действие удаляется из стека и, следовательно, когда вы выходите из него, оно просто завершается.

Ссылка

Вопрос в том, почему вы хотите использовать этот флаг?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...