Android 通知 setContentView

Posted

技术标签:

【中文标题】Android 通知 setContentView【英文标题】:Android Notification setContentView 【发布时间】:2013-02-18 12:43:52 【问题描述】:

http://developer.android.com/guide/topics/ui/notifiers/notifications.html Page 说,我必须使用 Intent

我不能使用 Intent,因为我的代码只有一个 Activity。我想使用通知返回应用程序,例如从设备的主屏幕

当我想通过单击通知执行某些操作时,我必须使用 Intents。点击通知后有没有办法使用setContentView

【问题讨论】:

【参考方案1】:

到目前为止,我还没有看到您的尝试,我打算尝试一下。

我不太明白为什么无论您的应用中有多少活动,您都不能声明/使用Intent。如果您需要在单击 Notification 后再次触发您唯一的 Activity,并且需要再次调用 Activity onCreate() 中的 setContentView(R.layout.some_layout_xml);,为什么不为您的 Notification 声明一个 Intent,如下所示:

Intent intent = new Intent(getApplicationContext(), YOUR_ACTIVITY.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(YOUR_ACTIVITY.this, 0, intent, 0);

这样,点击你的通知应该做你想做的事。

同样,考虑到您根本没有发布任何代码,这可能对您有用,也可能不适用。

编辑:根据 OP 的 cmets,我认为解决方案可能:

请参阅此链接,了解如何使用 Intent 发送数据以获取通知:How to send parameters from a notification-click to an activity?

基本上,由于触发了Notification,我假设用户已经登录。现在,当他们在单击Notification 后返回应用程序时跳过登录部分,发送一些附加信息Intent。然后,当Activity 启动时,检查该值并使用if...else 语句决定应该显示哪个布局。

再一次,我不能再强调这一点了,你应该总是展示你到目前为止所做的事情。这确实有助于找到解决方案。您的实际要求与您需要做什么完全没有关系。

【讨论】:

当我点击通知时,我的应用程序的新实例刚刚启动。应用程序是基于LoginActivity的,所以每次从通知打开应用程序时我都无法打开登录表单。 @Disa:点击通知时你想运行什么任务?把你的问题弄得更清楚一点真的很有帮助。 应用基于 LoginActivity。当我启动应用程序时,应该会出现登录表单。成功登录后应该会出现主要内容。当有人想回家几分钟时,点击通知应该会显示主要内容而无需重新登录。 @Disa:所以你有 2 个活动对吗?假设,第一个是 LoginActivity,第二个是 MainActivity?可以吗? 我只有一个 Activity,但有 3 个布局(登录、主要、添加联系人)。当我需要显示它们时,我通过 setContenetView 调用它们。【参考方案2】:

您可以使用 Intent 返回应用,例如像这样:

final Intent intent = new Intent(context, YourActivity.class);
final PendingIntent pendingIntent = PendingIntent.getActivity(
                context, 0, intent, 0);
final Notification notification = new Notification(
                R.drawable.logo, tickerText, System.currentTimeMillis());
notification.setLatestEventInfo(context, title, text, pendingIntent);
notificationManager.notify(NOTIFICATION_ID, notification);

【讨论】:

当我点击通知时,我的应用程序的新实例刚刚启动。

以上是关于Android 通知 setContentView的主要内容,如果未能解决你的问题,请参考以下文章

android setContentView处理流程

Android - setContentView 中的 loadDrawableForCookie Resources$NotFoundException

Android 9 (API 28) 活动在启动时崩溃 (setContentView)

findViewById 返回 null - Android - setContentView

Android切换页面--setContentView

android setContentView