2016-01-02 25 views
0

我正在爲一個圖庫應用程序做一個遠程顯示,我得到一個非常奇怪的錯誤,與演員似乎無關。起初,它由於App ID無效而崩潰,但在註冊它並獲取App ID後,它崩潰並且說選擇器不能爲null,但Cast部分不在調用Null的相同代碼中。任何幫助?Google Cast遠程顯示崩潰(選擇器不能爲空)

//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) 

回答

0

當你指出的某行代碼是拋出一個異常,它是有用的,以表明它是代碼的行,因爲我們沒有完整的來源。關於您的問題,在您的onCreate)中,正如您在文章中所述,您有MediaRouteSelector mMediaRouteSelector = ...。由於我們沒有你的源代碼,我會假設它和你在這裏複製一樣。由於您還在onCreateOptionsMenu()中使用mMediaRouteSelector,因此您聽起來像您有一個實例變量mMediaRouteSelector,它在您的onCreate()中被遮蔽;換句話說,在onCreate()中進行的轉讓對於該方法而言是局部的,而不是全局的,因此它在onCreateOptionsMenu()中幾乎爲零。將作業更改爲onCreate()

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

當我回家時,我會試試這個。如果有效,我會將其標記爲答案。謝謝!! – MJonesDev

+0

好的,該應用不再崩潰,但不會顯示Chromecast按鈕。 – MJonesDev

+0

無視該評論。沒有彈出的圖標是由於拼寫錯誤造成的。但是你的代碼工作。謝謝! – MJonesDev

相關問題