【问题标题】:Activity as dialog from BroadcastReceiver over another activity活动作为来自 BroadcastReceiver 的对话,通过另一个活动
【发布时间】:2016-03-12 04:29:54
【问题描述】:

当第三方应用程序中显示 Activity 时,我的应用程序会侦听由第三方应用程序触发的 IntentIntent 在我的应用程序中的 BroadcastReceiver 中收到。我想从BroadcastReceiver 开始一个活动,它将显示为Dialog,而不是现有的activity(触发了Intent)。

@Override
public void onReceive(final Context context, Intent intent) {
    String action = intent.getAction();
    Log.d(TAG, ">>>>>>>>> Action:" + action);

    if ("clover.intent.action.V1_ORDER_BUILD_START".equals(action)) {
        Intent i = new Intent(context.getApplicationContext(), ActiveOrderActivity.class);
        i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(i);
    }
}

Intent clover.intent.action.V1_ORDER_BUILD_START 被我的应用监听的另一个应用触发。当这个 Intent 被触发时,一个 Activity 已经打开(见下图中的背景 Activity)。

现在我想在我的应用中显示一个 Activity 作为对话框覆盖已显示的 Activity,就像下图中的“将客户添加到订单”中一样。

如上代码所示,我是从BroadcastReceiver启动一个Activity,但是启动时来到前台,之前的Activity没有显示出来。

请参阅下面的示例,了解我想要实现的目标,

【问题讨论】:

标签: android android-layout android-intent android-activity broadcastreceiver


【解决方案1】:

也许你应该创造

public class MyDialog extends DialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    // Get the layout inflater
    LayoutInflater inflaterViewObject = LayoutInflater.from(getActivity());
    // Inflate and set the layout for the dialog
    // Pass null as the parent view because its going in the dialog layout
    final View DialogView = inflaterViewObject.inflate(R.layout.dialog, null);
    final AlertDialog Dialog = new AlertDialog.Builder(getActivity()).create();
    Dialog.setView(DialogView);

    DialogView.findViewById(R.id.dialog_YES).setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            //your YES logic
            Dialog.dismiss();
        }
    });

    DialogView.findViewById(R.id.dialog_NO).setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
        //Your NO LOGIC
            Dialog.dismiss();
        }
    });

    // return dialog object (later on .show());
    return Dialog;
}

稍后你在你选择的地方写(在 BrodcastReciever 中)

MyDialog dialogObject = new MyDialog();
dialogObject.show(getFragmentManager(), "tag name for the dialog fragment.");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-07
    相关资源
    最近更新 更多