2013-05-15 3 views
0

Je travaille sur une application dans laquelle j'affiche un ContextMenu. Maintenant, quand l'un des éléments de menu dans ce ContextMenu est pressé, je voudrais afficher un PopupWindow. J'ai trouvé quelques exemples de comment utiliser PopupWindow sur Internet mais j'ai toujours un problème. J'ai le code suivant:PopupView.showAtLocation est indéfini pour le type Voir

LayoutInflater layoutInflater = (LayoutInflater) getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE); 
View popupView = layoutInflater.inflate(R.layout.popup, null); 
final PopupWindow popupWindow = new PopupWindow(popupView, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
popupView.showAtLocation(this.findViewById(R.id.main_layout), Gravity.CENTER, 0, 0); 

Et dans le fichier XML de l'activité:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/main_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:background="#232323" > 

.... 

</RelativeLayout> 

Je pensais que cela devrait fonctionner, mais je reçois le message d'erreur suivant:

« La méthode showAtLocation (View, int, int, int) n'est pas défini pour le type Affichage "

Qu'est-ce que cela signifie? Je donne une vue et trois entiers à showAtLocation, n'est-ce pas? Donc quel est le problème? Avez-vous des idées?

Répondre

1

vous l'appelez avec popView. Au lieu de cela, vous devriez l'appeler avec popupWindow.

cette méthode est pour popupWindow pas pour une vue

+0

Wow merci pour la réponse rapide! Stupide que je n'ai pas vu moi-même :). – Zero

0

S'il vous plaît vérifier ce

popupview.showAtLocation (vue, Gravity.CENTER, 0, 0);

première vue est une vue param dans votre page en cours, en fonction de cette position de vue ce point de vue contextuel est apparaître

2
popupView.showAtLocation(this.findViewById(R.id.main_layout), Gravity.CENTER, 0, 0); 

changez cette ligne à

popupWindaow.showAtLocation(popupView,Gravity.CENTER, 0, 0); 

comme ça.

Notez que. Vous avez défini showAtLocation pour Windaow, pas pour View

J'espère que cela va vous aider.

Questions connexes