0

を表示するアプリに取り組んでいますContextMenu。ここで、このメニュー項目の 1 つContextMenuが押されたときに、 を表示したいと思いますPopupWindow。インターネットで使用方法の例をいくつか見つけましPopupWindowたが、まだ問題があります。次のコードがあります。

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

アクティビティの XML ファイルでは、次のようになります。

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

これでうまくいくはずだと思ったのですが、次のエラー メッセージが表示されます。

「メソッド showAtLocation(View, int, int, int) はタイプ View に対して定義されていません」

これは何を意味するのでしょうか?私は showAtLocation に View と 3 つの整数を与えていますよね? だから問題は何ですか?何かアイデアはありますか?

4

3 に答える 3

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

この行を

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

このような。

ご了承ください。ではなく に設定showAtLocationし ましたWindaowView

これがお役に立てば幸いです。

于 2013-05-15T10:12:04.893 に答える
1

popViewで呼び出しています。代わりに popupWindow で呼び出す必要があります。

このメソッドは popupwindow 用であり、ビュー用ではありません

于 2013-05-15T09:57:44.863 に答える