如何通过navigationdraweractivity对片段调用onactivityresult

4zcjmb1e  于 2021-08-20  发布在  Java
关注(0)|答案(1)|浏览(376)

我有一个非常奇怪的情况,我的应用程序的一个活动是一个导航抽屉。它打开了一些碎片。在一个片段中,我调用一个包含接口的对话框。从对话框中单击按钮时,将调用interface。然而,接口receiver必须在我的导航抽屉活动中实现,而不是在片段中实现(我真的不明白为什么)。从那里,点击按钮,我想开始一个结果活动。在这一点之前,一切正常,但当我点击最近开始的活动时,我无法获得结果。活动的结果被发送到导航抽屉活动,但我想在片段中执行一个操作。有什么想法吗?
在我的片段中,我称之为对话

mReactivateDialog = new ReactivateDialog(deal);
            mReactivateDialog.show(getFragmentManager(), ACTIVATE_DIALOG);

在我的对话框(reactivatedialog)中,我有以下触发接口的代码

mEdit.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mOnDialogButtonClicked.onEditDialogClicked(deal);
            dismiss();
        }
    });

    mActivate.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mOnDialogButtonClicked.onActivateDialogClicked();
        }
    });

    return view;
}

public interface OnDialogButtonClicked {
    void onActivateDialogClicked();

    void onEditDialogClicked(Deal deal);
}

@Override
public void onAttach(Context context) {
    try {
        mOnDialogButtonClicked = (OnDialogButtonClicked) context;
    } catch (ClassCastException e) {
        throw new ClassCastException(context.toString() +
                "must implement OnDialogButtonClicked");
    }
    super.onAttach(context);
}

最后,在我的导航抽屉活动中,下面的代码是用于监听界面的代码

@Override
public void onActivateDialogClicked() {
    Toast.makeText(this, "ACTIVATE clicked", Toast.LENGTH_SHORT).show();
}

@Override
public void onEditDialogClicked(Deal deal) {
    Toast.makeText(this, "EDIT clicked", Toast.LENGTH_SHORT).show();
    startActivityForResult(new Intent(this, CreateNewDealActivity.class)
                    .putExtra("Deal", deal), 1);
}

现在我想在调用接口时在我的第一个活动(片段)中执行一个操作

相关问题