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();
我正在为图库应用程序进行远程显示,但我收到一个非常奇怪的错误,似乎与演员表完全无关。一开始是因为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();