Отправка данных из дочернего действия onActivityResult () в родительское действие onActivityResult () - PullRequest
0 голосов
/ 09 мая 2019

У меня есть приложение с 2 видами деятельности.Действие A (родительский) запускает Действие B (дочерний), вызывая:

startActivityForResult(intentB,B_Request);

Действие B - сканер штрих-кода.(Я использую эту библиотеку: com.journeyapps: zxing-android-embedded: 3.2.0@aar).В этом упражнении я должен переопределить метод onActivityResult (), чтобы получить отсканированный код.После этого я хочу отправить данные, хранящиеся в «коде», обратно родителю (Activity A) onActivityResult ().Я сделал это так:

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
        String code = null;

        if(result != null){
            if(result.getContents() == null){
                return;
            }
            else {
                code = result.getContents();
            }
        }
        else {
            super.onActivityResult(requestCode, resultCode, data);
        }

        Intent intent = new Intent(getApplicationContext(),A.class);
        intent.putExtra("scannedCode", code);
        setResult(RESULT_OK, intent);
        finish();
}

Родитель onActivityResult () выглядит следующим образом:

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode == CAMERA_REQUEST){
            if(resultCode == RESULT_OK){

                String scannedCode = data.getStringExtra("scannedCode");
                toastMessage("Scanned code: " + scannedCode);
            }
        }
    }

Я получаю следующее исключение, и вместо просмотра действия A я перенаправлен народительский номер Activitie.

E/ActivityManager: Failed to schedule configuration change
    android.os.DeadObjectException
        at android.os.BinderProxy.transactNative(Native Method)
        at android.os.BinderProxy.transact(Binder.java:1177)
        at android.app.IApplicationThread$Stub$Proxy.scheduleTransaction(IApplicationThread.java:1815)
        at android.app.servertransaction.ClientTransaction.schedule(ClientTransaction.java:129)
        at com.android.server.am.ClientLifecycleManager.scheduleTransaction(ClientLifecycleManager.java:47)
        at com.android.server.am.ClientLifecycleManager.scheduleTransaction(ClientLifecycleManager.java:100)
        at com.android.server.am.ActivityManagerService.updateGlobalConfigurationLocked(ActivityManagerService.java:24782)
        at com.android.server.am.ActivityManagerService.updateDisplayOverrideConfigurationLocked(ActivityManagerService.java:24902)
        at com.android.server.am.ActivityManagerService.updateDisplayOverrideConfigurationLocked(ActivityManagerService.java:24879)
        at com.android.server.am.ActivityStackSupervisor.ensureVisibilityAndConfig(ActivityStackSupervisor.java:1671)
        at com.android.server.am.ActivityStackSupervisor.realStartActivityLocked(ActivityStackSupervisor.java:1420)
        at com.android.server.am.ActivityStackSupervisor.startSpecificActivityLocked(ActivityStackSupervisor.java:1709)
        at com.android.server.am.ActivityStack.resumeTopActivityInnerLocked(ActivityStack.java:3043)
        at com.android.server.am.ActivityStack.resumeTopActivityUncheckedLocked(ActivityStack.java:2488)
        at com.android.server.am.ActivityStackSupervisor.resumeFocusedStackTopActivityLocked(ActivityStackSupervisor.java:2234)
        at com.android.server.am.ActivityStack.completePauseLocked(ActivityStack.java:1745)
        at com.android.server.am.ActivityStack.activityPausedLocked(ActivityStack.java:1669)
        at com.android.server.am.ActivityManagerService.activityPaused(ActivityManagerService.java:9657)
        at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:224)
        at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:3820)
        at android.os.Binder.execTransact(Binder.java:752)

ps Мне недостаточно получить код в Деятельности B, мне нужен код обратно в Деятельности A.

Подскажите, пожалуйста, что яЯ тут не так делаю?

Спасибо!

1 Ответ

0 голосов
/ 09 мая 2019

просто вставьте новое намерение () вместо

новое намерение (getApplicationContext (), A.class)

в вашей детской деятельности

...