2014-04-30 1 views
0

Essayer d'ajouter sous forme de soutien Chromecast app et obtenir l'erreur suivante:CHROMECAST: La méthode getActionProvider (MenuItem) est définie pour le type MenuItemCompat

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

Mon code:

Menu 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> 

Activité:

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


} 

Toute aide serait grandement appréciée.

Merci Josh

Répondre

1

importation android.view.Menu et MenuItem, pas celui compat:

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

Votre xml menu a un certain nombre de choses que vous voulez nuit à jour:

  • Supprimer l'actionClassClasse
  • L'icône d'incantation doit toujours être visible, alors faites-le: showAsAction = "always"

Un échantillon xml pourrait être:

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

Essayez ces derniers et voir si cela aide.

+0

Mes importations étaient déjà comme vous l'avez suggéré. J'ai corrigé le code XML, mais cela n'a aucun impact sur ce problème. – Josh

+0

Merci pour la réponse. Il a été capable de me mettre sur la bonne voie. Voir la réponse acceptée. – Josh

0

J'ai trouvé que la source de ce problème était que j'utilisais une bibliothèque obsolète android-support-v4.jar dans mon projet. J'ai importé le dernier fichier et l'erreur a été résolue.

Questions connexes