1

メソッドshowListを使用しているonCreateメソッドにimageViewがあります。これはコードです:

action_bar_log_in_icon.setOnClickListener(new OnClickListener() {

                            @Override
                            public void onClick(View v) {

                                allResults.clear();
                                allResults.add(action_bar_log_in_icon);
                                allResults.add(action_bar_data_privacy_icon);
                                allResults.add(action_bar_vCard_icon);
                                allResults.add(action_bar_email_icon);
                                showList();
                            }
                        });

コードメソッド showList:

private void showList() {
            final ListDialog listDialog = new ListDialog(this);
            listDialog.setCanceledOnTouchOutside(true);

            final ListView lv = (ListView) listDialog
                    .findViewById(R.id.spinnerlist);

            if(lAdapter == null){
                lAdapter = new ListAdapter(getBaseContext(),
                    R.layout.spinner_item,
                    (ArrayList<ImageView>) allResults);
            }

            lv.setAdapter(lAdapter);
            lv.setOnItemClickListener(new OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view,
                        int position, long id) {
                    switch(position){
                    case 0:
                        intent = new Intent(ActionBarMain2.this, LoginActivity.class);
                        startActivity(intent);
                        break;
                    case 1:
                        intent = new Intent(ActionBarMain2.this, LoginActivity.class);
                        startActivity(intent);
                        break;
                    case 2:
                        intent = new Intent(ActionBarMain2.this, vCard_view.class);
                        startActivity(intent);
                        break;
                    case 3:
                        intent = new Intent(ActionBarMain2.this, EmailView.class);
                        startActivity(intent);
                        break;
                    }
                    listDialog.dismiss();
                }

            });
            WindowManager.LayoutParams WMLP = listDialog.getWindow()
                    .getAttributes();
            WMLP.gravity = Gravity.TOP | Gravity.RIGHT;
            WMLP.y = 50;
            WMLP.width = 100;
            listDialog.getWindow().setAttributes(WMLP);

                listDialog.show();



        }

このソリューションは機能し、イメージビューをクリックするとリストが表示されますが、同じイメージビューを再度クリックすると問題が発生します。リストは引き続き表示されます。リストが表示されているときに最初にクリックしたときと、もう一度クリックしたときにリストを閉じるときなどはどうすればよいですか?

4

3 に答える 3

1

ダイアログの状態をキャプチャするためのフラグを設定します。次に、そのフラグに条件を設定します。表示されている場合は設定しますdismissDialog(dialogName);

于 2012-10-24T08:57:44.133 に答える
1

ListDialogアクティビティで一度だけ作成してonCreateまだ表示されていない場合はどうなりますか? 次に、ImageView をクリックすると、次のことができます。if(dialog.isVisible()) { dialog.show(); } else { dialog.dismiss(); }

于 2012-10-24T08:45:15.230 に答える
0

私の問題を解決します。このダイアログは私の imageView をカバーするので、ダイアログを少し下に配置しました。アドバイスありがとうございます。

于 2012-10-24T09:52:04.803 に答える