首页 > 解决方案 > 如何在不与 MainActivity 交互的情况下从通知中打开片段页面?

问题描述

我已经编写了代码来创建通知。

我希望通知直接打开一个名为“StepsFragment”的片段类。

但是,每当我单击通知时,什么都没有发生。这里可能是什么问题?

我在 Stack Overflow 上尝试了以下解决方案:

收到通知问题并打开一个片段

如何从通知中打开当前片段?

从 Notification 的 childfragment 打开一个对话框片段

它们导致我遇到语法错误,因此我无法构建我的项目。

这是我用来打开通知片段的代码。

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        String input = intent.getStringExtra("inputExtra");

        Intent notificationIntent = new Intent(this, StepsFragment.class);
        PendingIntent pendingIntent = PendingIntent.getActivity(this,0,notificationIntent,0);

        Notification notification = new NotificationCompat.Builder(this, CHANNEL_ID)
                .setContentTitle("Steps Tracker")
                .setContentText("Steps tracked : " + input )
                .setSmallIcon(R.drawable.steps)
                .setContentIntent(pendingIntent)
                .build();
        startForeground(1,notification);

        return START_NOT_STICKY;
    }

如何打开通知,以便在我点击通知时将我带到 StepsFragment 而不是什么都不做?

标签: androidandroid-intentnotificationsfragment

解决方案


您不能Fragment直接从 an打开Intent- Fragments 附加到 an Activity,因此您需要调用一个 Activity ,然后该 Activity 将托管您的 Fragment。

有几种方法可以实现这一目标。例如,您可以StepsFragment进入它自己的Activity,然后使用 yourIntent来调用 that Activity。或者,您可以在Intent、 调用中添加一个额外的MainActivity内容,并在您的 Activity 中使用该额外内容作为它应该只显示的提示StepsFragment


推荐阅读