Google 投射远程显示崩溃(选择器不能为空)

Google Cast Remote Display Crash (Selector must not be null)

我正在为图库应用程序进行远程显示,但我收到一个非常奇怪的错误,似乎与演员表完全无关。一开始是因为App ID无效导致崩溃,后来注册了,拿到App ID后,崩溃说selector must not be null,但是Cast部分不在调用Null的同一段代码中。有帮助吗?

//Inside of OnCreate
MediaRouter = MediaRouter.getInstance(getApplicationContext());
    MediaRouteSelector mMediaRouteSelector = new MediaRouteSelector.Builder()
            .addControlCategory( CastMediaControlIntent.categoryForCast(getString(R.string.cast_sdk_id)))
            .build();



//Inside of OnCreateOptionsMenu
 public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_viewer, menu);
    if (mAdapter.getEntries().size() > 0) {
        MediaEntry currentEntry = mAdapter.getEntries().get(mCurrentPosition);
        if (currentEntry == null || currentEntry.isVideo()) {
            menu.findItem(R.id.print).setVisible(false);
            menu.findItem(R.id.edit).setVisible(false);
            menu.findItem(R.id.set_as).setVisible(false);
        } else {
            menu.findItem(R.id.print).setVisible(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT);
            menu.findItem(R.id.edit).setVisible(true);
            menu.findItem(R.id.set_as).setVisible(true);
        }
    }
    menu.findItem(R.id.slideshow).setVisible(!mAllVideos && mSlideshowTimer == null);
    MenuItem mediaRouteMenuItem = menu.findItem(R.id.media_route_menu_item);
    MediaRouteActionProvider mediaRouteActionProvider =
            (MediaRouteActionProvider) MenuItemCompat.getActionProvider(mediaRouteMenuItem);
    mediaRouteActionProvider.setRouteSelector(mMediaRouteSelector);

    return super.onCreateOptionsMenu(menu);;



java.lang.IllegalArgumentException: selector must not be null
                                                                                 at android.support.v7.app.MediaRouteActionProvider.setRouteSelector(MediaRouteActionProvider.java:169)
                                                                                 at com.afollestad.impression.viewer.ViewerActivity.onCreateOptionsMenu(ViewerActivity.java:804)

当您声明某行代码引发异常时,指出它是哪一行代码会很有用,因为我们没有您的完整源代码。关于您的问题,在您的 onCreate) 中,正如您在 post 中所述,您有 MediaRouteSelector mMediaRouteSelector = ...。由于我们没有您的源代码,因此我假设它确实与您在此处复制的一样。由于您还在 onCreateOptionsMenu() 中使用了 mMediaRouteSelector,因此听起来您有一个实例变量 mMediaRouteSelector,它被隐藏在 onCreate() 中;换句话说,在 onCreate() 中进行的赋值对于该方法是局部的而不是全局的,因此它在 onCreateOptionsMenu() 中实际上是空的。将 onCreate() 中的分配更改为

mMediaRouteSelector = new MediaRouteSelector.Builder()
            .addControlCategory( CastMediaControlIntent.categoryForCast(getString(R.string.cast_sdk_id)))
            .build();