MediaRouter的Chromecast Nullpointer例外

时间:2014-07-08 23:50:52

标签: android chromecast

我正在尝试将Chromecast图标放入菜单项中。我在菜单布局中定义了以下内容。

<item
android:id="@+id/media_route_menu_item"
android:title="Stream your videos!"
android:actionProviderClass="android.support.v7.app.MediaRouteActionProvider"
android:showAsAction="always"/>

在我的onCreateOptionsMenu()方法中,我按照官方chromecast教程中的建议执行以下操作。

   1.   mediaRouteMenuItem = menu.findItem(R.id.media_route_menu_item);
   2.  mediaRouteActionProvider =
            (MediaRouteActionProvider) MenuItemCompat.getActionProvider(mediaRouteMenuItem);
   3. mediaRouteActionProvider.setRouteSelector(mMediaRouteSelector);

这在上面的第3行中给出了这个错误。

 java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.app.MediaRouteActionProvider.setRouteSelector(android.support.v7.media.MediaRouteSelector)' on a null object reference

我做错了什么?有人可以帮助我吗?

编辑:

这是我的mMediaRouteSelector:

         mMediaRouteSelector = new MediaRouteSelector.Builder()
            .addControlCategory(CastMediaControlIntent.categoryForCast("[MY APP ID]"))
            .build();

1 个答案:

答案 0 :(得分:1)

有时会发生这些类型的错误,因为proguard会更改对象和/或函数的名称。

一种可能的解决方案是将这些添加到progaurd配置文件中:

-dontwarn android.support.v7.**
-keep class android.support.v7.internal.** { *; }
-keep interface android.support.v7.internal.** { *; }
-keep class android.support.v7.** { *; }
-keep interface android.support.v7.** { *; }