java - addParentStack 中的 NameNotFoundException

标签 java android notifications package back-stack

我正在尝试构建一个通知并显示它,并根据我正在显示的 Intent 构建一个堆栈。但我收到一个 NameNotFoundException。

Intent resultIntent = new Intent(mContext, ForecastFragment.class);

TaskStackBuilder stackBuilder = TaskStackBuilder.create(mContext);
stackBuilder.addParentStack(ForecastFragment.class);
stackBuilder.addNextIntent(resultIntent);
PendingIntent resultPendingIntent = stackBuilder.
                    getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder.setContentIntent(resultPendingIntent);
NotificationManager notificationManager =
                    (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(10 ,mBuilder.build());

这是我得到的异常。

3541-3562/com.example.android.sunshine.app E/AndroidRuntime: FATAL EXCEPTION: SyncAdapterThread-1
          Process: com.example.android.sunshine.app, PID: 3541
          java.lang.IllegalArgumentException: android.content.pm.PackageManager$NameNotFoundException: ComponentInfo{com.example.android.sunshine.app/com.example.android.sunshine.app.ForecastFragment}
             at android.support.v4.app.TaskStackBuilder.addParentStack(TaskStackBuilder.java:247)
             at android.support.v4.app.TaskStackBuilder.addParentStack(TaskStackBuilder.java:226)
             at com.example.android.sunshine.app.sync.SunshineSyncAdapter.notifyWeather(SunshineSyncAdapter.java:526)
             at com.example.android.sunshine.app.sync.SunshineSyncAdapter.getWeatherDataFromJson(SunshineSyncAdapter.java:424)
             at com.example.android.sunshine.app.sync.SunshineSyncAdapter.onPerformSync(SunshineSyncAdapter.java:255)
             at android.content.AbstractThreadedSyncAdapter$SyncThread.run(AbstractThreadedSyncAdapter.java:259)
          Caused by: android.content.pm.PackageManager$NameNotFoundException: ComponentInfo{com.example.android.sunshine.app/com.example.android.sunshine.app.ForecastFragment}
             at android.app.ApplicationPackageManager.getActivityInfo(ApplicationPackageManager.java:314)
             at android.support.v4.app.NavUtils.getParentActivityName(NavUtils.java:301)
             at android.support.v4.app.NavUtils.getParentActivityIntent(NavUtils.java:256)
             at android.support.v4.app.TaskStackBuilder.addParentStack(TaskStackBuilder.java:240)
             at android.support.v4.app.TaskStackBuilder.addParentStack(TaskStackBuilder.java:226) 
             at com.example.android.sunshine.app.sync.SunshineSyncAdapter.notifyWeather(SunshineSyncAdapter.java:526) 
             at com.example.android.sunshine.app.sync.SunshineSyncAdapter.getWeatherDataFromJson(SunshineSyncAdapter.java:424) 
             at com.example.android.sunshine.app.sync.SunshineSyncAdapter.onPerformSync(SunshineSyncAdapter.java:255) 
             at android.content.AbstractThreadedSyncAdapter$SyncThread.run(AbstractThreadedSyncAdapter.java:259)

我检查了包名称和类 ForecastFragment 所在的包,但它们都是正确的。 有人可以帮我整理一下这个吗?

最佳答案

fragment 不是组件,不能与 Intent 一起使用。只有 ActivityServiceBroadcastReceiver 等组件可用于构建 Intent

因此,您的第一行 (new Intent(mContext, ForecaseFragment.class)) 和 addParentStack(ForecastFragment.class) 均无效。您需要使用在包含该 fragment 的 list 中注册的Activity

关于java - addParentStack 中的 NameNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38043592/

相关文章:

android - 持久性和非持久性数据之间的区别

安卓 BLE API : multiple Notification

delphi - 哪种网络协议(protocol)用于远程应用程序的轻量级通知?

java - 如何使用水平或垂直缩放在java中读取大文件并写入文件

java - Android 上 SQLite 查询的语法错误

Android:去除除 img 标签之外的所有 html

android - 直接从服务器在android中播放视频

android - 从 android 中的通知开始新 Activity

java - 设置 UsbDeviceListener javax.usb/usb4java

java - 微调器不显示条目