17

スピナーのドロップダウンが閉じられたときにイベントをキャッチしたい。ユーザーが onItemSelected() 内の任意の項目をクリックすると、それをキャッチできます。しかし、ユーザーがドロップダウン領域または戻るボタンの外側に触れても、これらも消えるため、キャッチしたいと思います。ログを観察すると、これら2つの原因で、「入力イベントを終了しようとしましたが、入力イベントレシーバーは既に破棄されています」と表示されます

ソースコードを観察しました。これは、finishInputEvent(InputEvent event, boolean handler)メソッドのInputEventReceiver.javaから出力されます。ただし、これは最終的なメソッドであるため、オーバーライドする意味はありません。そのような場合にドロップダウンが却下されたときの処理方法を提案してもらえますか?

4

4 に答える 4

1

Popup Menuスピナーの代わりに使っています。というのは、私の知る限り、dismiss イベントはスピナーではキャッチできませんでしたが、Popup menu ではonDismissListerner()popup menu に設定することで対応できました。

popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {  
             public boolean onMenuItemClick(MenuItem item) {  
              Toast.makeText(MyActivity.this,"Clicked on: " + item.getTitle(),Toast.LENGTH_LONG).show();  
              return true;  
             }  
            });  
popup.setOnDismissListener (new PopupMenu.OnDismissListener(){

public void onDismiss()
{
   //catch dismiss event here.
}
});
于 2014-02-20T09:17:24.713 に答える
-1

本当にスピナーを使用する必要がない場合は、このコードを使用してみてください。
ダイアログ内のリストビュー。ダイアログの Cancel/dismiss イベントをリッスンできます (同じこと)。これは API 11 で使用できます。

final Dialog dialog = new Dialog(context);
            dialog.setContentView(R.layout.custom_list_popup);
            //dialog.setCancelable(false);
            dialog.setTitle("Title");

            dialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
                @Override
                public void onCancel(DialogInterface dialog) {
                    //
                    //Do your onCancel things here
                    //
                }
            });


            final ListView listView = (ListView) dialog.findViewById(R.id.lv_sales_tax);
            listView.setAdapter(adapter);

            listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                    //
                    //Do your stuff here
                    //

                    dialog.dismiss();
                }
            });

            dialogButton.setVisibility(View.GONE);
            dialog.show();

        }
    });

custom_list_popup.xml の内容

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="20dp"
android:orientation="vertical">

<ListView
    android:id="@+id/lv_sales_tax"
    android:divider="@drawable/list_divider"
    android:dividerHeight="20dp"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

</LinearLayout>
于 2016-05-02T06:57:30.597 に答える