2014-04-30 72 views
0

試圖增加CHROMECAST支持表格可以應用,並得到以下錯誤:CHROMECAST:該方法getActionProvider(菜單項)是未定義的類型MenuItemCompat

The method getActionProvider(MenuItem) is undefined for the type MenuItemCompat

我的代碼:

菜單XML

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto"> 

    ... 

    <item android:id="@+id/media_route_menu_item" 
    android:title="Chromecast" 
    android:orderInCategory="500" 
android:actionProviderClass="android.support.v7.app.MediaRouteActionProvider" 
    android:actionViewClass="android.support.v7.app.MediaRouteButton" 
    android:showAsAction="never" /> 

</menu> 

活動:

import java.io.BufferedReader; 
import java.io.File; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.util.ArrayList; 
import java.util.List; 
import java.util.regex.Pattern; 

import org.apache.http.HttpResponse; 
import org.apache.http.NameValuePair; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.entity.UrlEncodedFormEntity; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.apache.http.message.BasicNameValuePair; 
import org.apache.http.protocol.HTTP; 
import org.json.JSONArray; 
import org.json.JSONObject; 
import org.jsoup.Jsoup; 
import org.jsoup.nodes.Document; 
import org.jsoup.nodes.Element; 
import org.jsoup.select.Elements; 

import android.annotation.SuppressLint; 
import android.app.ActionBar; 
import android.app.ActionBar.OnNavigationListener; 
import android.app.Activity; 
import android.app.AlertDialog; 
import android.app.Dialog; 
import android.app.ProgressDialog; 
import android.content.BroadcastReceiver; 
import android.content.ComponentName; 
import android.content.ContentProviderClient; 
import android.content.ContentResolver; 
import android.content.ContentValues; 
import android.content.Context; 
import android.content.DialogInterface; 
import android.content.Intent; 
import android.content.IntentFilter; 
import android.content.ServiceConnection; 
import android.content.pm.ActivityInfo; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.graphics.Bitmap; 
import android.graphics.Typeface; 
import android.net.Uri; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.os.Environment; 
import android.os.Handler; 
import android.os.IBinder; 
import android.os.RemoteException; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 
import android.support.v4.util.LruCache; 
import android.support.v4.view.MenuItemCompat; 
import android.support.v4.view.ViewPager; 
import android.support.v7.app.MediaRouteActionProvider; 
import android.support.v7.app.MediaRouteButton; 
import android.support.v7.media.MediaRouteSelector; 
import android.support.v7.media.MediaRouter; 
import android.support.v7.media.MediaRouter.RouteInfo; 
import android.util.Log; 
import android.view.KeyEvent; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.widget.ImageView; 
import android.widget.SearchView; 
import android.widget.Toast; 

import com.google.android.gms.cast.ApplicationMetadata; 
import com.google.android.gms.cast.Cast; 
import com.google.android.gms.cast.Cast.ApplicationConnectionResult; 
import com.google.android.gms.cast.Cast.MessageReceivedCallback; 
import com.google.android.gms.cast.CastDevice; 
import com.google.android.gms.cast.CastMediaControlIntent; 
import com.google.android.gms.common.ConnectionResult; 
import com.google.android.gms.common.api.GoogleApiClient; 
import com.google.android.gms.common.api.ResultCallback; 
import com.google.android.gms.common.api.Status; 


public class MyApp extends FragmentActivity { 
... 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 

    ... 


    MenuItem mediaRouteMenuItem = menu.findItem(R.id.media_route_menu_item); 
    MediaRouteActionProvider mediaRouteActionProvider = (MediaRouteActionProvider) MenuItemCompat 
      .getActionProvider(mediaRouteMenuItem); 
    // Set the MediaRouteActionProvider selector for device discovery. 
    mediaRouteActionProvider.setRouteSelector(mMediaRouteSelector); 


} 

任何幫助將不勝感激。

感謝 喬希

回答

1

導入android.view.Menu和菜單項,而不是compat的一個:

import android.view.Menu; 
import android.view.MenuItem; 

你的菜單XML有一對夫婦的事情,你晚上要更新:

  • 刪除actionViewClass
  • 投影圖標應始終可見,所以使它:showAsAction =「always」

一個示例XML可能是:

<item 
    android:id="@+id/media_route_menu_item" 
    android:title="@string/media_route_menu_title" 
    app:actionProviderClass="android.support.v7.app.MediaRouteActionProvider" 
    app:showAsAction="always"/> 

嘗試這些,看看有沒有什麼幫助。

+0

我的進口已經按照您的建議。我修復了xml代碼,但是這對這個問題沒有影響。 – Josh

+0

謝謝你的回答。它能夠讓我走上正軌。看到接受的答案。 – Josh

0

我發現這個問題的根源是我在項目中使用了過時的庫。我導入了最新的文件並解決了錯誤。

相關問題