1

ボタンを作成し、onClicklistener も設定しましたが、ポップアップを開くことができません。以下に示すxmlおよびjavaコードをコーディングしました。それをクリックすると、クリックしますが何もしません。

ポップアップのxmlコード

    <?xml version="1.0" encoding="UTF-8"?>
    <LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:id = "@+id/popup"
android:orientation = "vertical">

<TextView 
    android:id = "@+id/popUpTitle"
    android:layout_width = "wrap_content"
    android:layout_height = "wrap_content"
    android:text = "@string/popup" />

<TextView 
    android:id = "@+id/popUpContent"
    android:layout_width = "wrap_content"
    android:layout_height = "wrap_content"
    android:text = "@string/popcontent"
    android:layout_marginBottom="47dp" />

<Button
    android:id="@+id/popUpButtonClose"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/close" />

クリック時にポップアップを作成するボタンの Java コード

    public void onClick(View arg0) {
    // TODO Auto-generated method stub
    switch(arg0.getId())
    {
        case R.id.buttonCreate:
            Intent i = new Intent(CreateQuestions.this, UploadQuestions.class);
            startActivity(i);
            break;

        case R.id.buttonStartQuiz:
            if (p2 != null)
            {
                showPopup(CreateQuestions.this, p2);
            }

}

ポップアップを作成するメソッド

    //method that displays the pop up
}
private void showPopup(final CreateQuestions createQuestions1, Point p2) {
    // TODO Auto-generated method stub
    int popupWidth = 200;
    int popupHeight = 150;

    LinearLayout viewGroup = (LinearLayout) createQuestions1.findViewById (R.id.popup);
    LayoutInflater layoutInflater  = (LayoutInflater) createQuestions1.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View layout = layoutInflater.inflate(R.layout.popup, viewGroup);

    //method to create the popup
    final PopupWindow popupWindow = new PopupWindow(createQuestions1);
    popupWindow.setContentView(layout);
    popupWindow.setWidth(popupWidth);
    popupWindow.setHeight(popupHeight);
    popupWindow.setFocusable(true);

    //some offseta to align the pop up  relative to the button's positions
    int OFFSET_X = 30;
    int OFFSET_Y = 30;

    //clear the default background
    popupWindow.setBackgroundDrawable(new BitmapDrawable());

    //displaying the pop up at the specified location and offsets
    popupWindow.showAtLocation(layout, Gravity.NO_GRAVITY, p2.x + OFFSET_X, p2.y + OFFSET_Y);

    //getting the reference to Close button and close the popup when clicked.
    close = (Button) layout.findViewById(R.id.popUpButtonClose);
    close.setOnClickListener(new OnClickListener(){

        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            popupWindow.dismiss();
        }


    });


    }

ガイダンスのヘルプとヒントをいただければ幸いです。

4

1 に答える 1

0

うーん。. . . ボタンに clickListener を配置していないようです。

このコードをonCreateに入れましたか??

buttonStartQuiz.setOnClickListener(this);

また

また、以下のコードの前にp2の値を確認してください

if (p2 != null)

変数を初期化していないようです。ので、ご確認ください。

そうでない場合は、それを置いて見てください。それでも問題が解決しない場合は、お知らせください。

于 2012-12-12T04:00:40.820 に答える