Google Cast 远程显示崩溃(选择器不能为空)
Posted
技术标签:
【中文标题】Google Cast 远程显示崩溃(选择器不能为空)【英文标题】:Google Cast Remote Display Crash (Selector must not be null) 【发布时间】:2016-01-02 20:11:26 【问题描述】:我正在为画廊应用程序制作远程显示,但我遇到了一个非常奇怪的错误,该错误似乎与演员表无关。一开始是因为一个无效的App ID而崩溃,但是在注册它并获得一个App ID之后,它崩溃并说选择器不能为空,但是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)
【问题讨论】:
【参考方案1】:当您声明某行代码引发了异常时,指明是哪一行代码很有用,因为我们没有您的完整源代码。关于您的问题,在您的onCreate)
中,正如您在帖子中所述,您有MediaRouteSelector mMediaRouteSelector = ...
。由于我们没有您的源代码,我将假设它确实与您在此处复制的一样。由于您还在onCreateOptionsMenu()
中使用了mMediaRouteSelector
,听起来您有一个实例变量mMediaRouteSelector
,它在您的onCreate()
中隐藏;换句话说,在onCreate()
中所做的分配是该方法的本地而不是全局的,因此它在onCreateOptionsMenu()
中实际上是空的。将onCreate()
中的赋值改为
mMediaRouteSelector = new MediaRouteSelector.Builder()
.addControlCategory( CastMediaControlIntent.categoryForCast(getString(R.string.cast_sdk_id)))
.build();
【讨论】:
我回家后试试这个。如果有效,我会将其标记为答案。谢谢!! 好的,应用程序不再崩溃,但它不显示 Chromecast 按钮。 忽略该评论。图标没有弹出是由于拼写错误。但是您的代码有效。谢谢!以上是关于Google Cast 远程显示崩溃(选择器不能为空)的主要内容,如果未能解决你的问题,请参考以下文章
Chromecast 扩展控制器、曲目选择器对话框在 11.0.2 更新后使应用程序崩溃
选择表格单元格以显示 iOS7 上的新视图崩溃,“无法识别的选择器发送到实例”