android — Почему myButton.setOnClickListener () не принимает DialogInterface.OnClickListener в качестве параметра?" />

Почему myButton.setOnClickListener () не принимает DialogInterface.OnClickListener в качестве параметра?

Вот мой код:

myButton.setOnClickListener( new DialogInterface.OnClickListener() {

    @Override
    public void onClick(DialogInterface arg0, int arg1) {
    // TODO Auto-generated method stub

    }


});

Что дает мне эту ошибку: Метод setOnClickListener (View.OnClickListener) в типе View не применим для аргументов (new DialogInterface.OnClickListener () {})

У меня импортированы DialogInterface и DialogInterface.OnClickListener. myButton находится в диалоге.

Вот мои текущие настройки. button1 запускает диалог, а button2 содержится в диалоге.

private void setOnClickListeners() {
    button1.setOnClickListener( new OnClickListener() {

        @Override
        public void onClick(View arg0) {

        //set up dialog
        Dialog dialog = new Dialog(WorkScreen.this);
        dialog.setContentView(R.layout.dialog_layout);
        dialog.setTitle("My Dialog");
        dialog.setCancelable(true);    
        dialog.show();

        }

    });

    button2.setOnClickListener( new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub

        }
    });
}

Это происходит сбой при загрузке действия. Я также попытался переместить объявление Dialog в начало класса и инициализировать его в onCreate, но это ничего не изменило. Идеи?

4 голоса | спросил Brianide 4 52011vEurope/Moscow11bEurope/MoscowFri, 04 Nov 2011 04:07:31 +0400 2011, 04:07:31

4 ответа


0

используйте DialogInterface.OnClickListener, когда вам нужно обрабатывать кнопки только в диалогах, но View.onclickListener для обработки представлений в Activiy.

class MyDialog extends Dialog {

    Context c ; 
    public MyDialog(Context context) {
        super(context);
        // TODO Auto-generated constructor stub

        c = context ; 
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);

        setContentView(R.layout.dialog_layout) ; 

        Button b3 =(Button) findViewById(R.id.button3); 
        b3.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                Toast.makeText(c,"Button 3 has been clicked ",Toast.LENGTH_LONG).show();
            }



        });

    }


}

я создаю свой собственный диалог и обрабатываю кнопку в диалоге в этом классе

ответил mohamed 4 52011vEurope/Moscow11bEurope/MoscowFri, 04 Nov 2011 04:13:18 +0400 2011, 04:13:18
0

Вы не хотите использовать DialogInterface.OnClickListener для кнопки. Вы должны использовать View.OnClickListener .

ответил Bobbake4 4 52011vEurope/Moscow11bEurope/MoscowFri, 04 Nov 2011 04:10:12 +0400 2011, 04:10:12
0

Поскольку метод setOnClickListener () класса Button ожидает параметр типа View.OnClickListener (), а не DialogInterface.OnClickListener ();

вы должны использовать его следующим образом:

myButton.setOnClickListener( new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub

    }


});
ответил FoamyGuy 4 52011vEurope/Moscow11bEurope/MoscowFri, 04 Nov 2011 04:11:16 +0400 2011, 04:11:16
0

DialogInterface.OnClickListener устанавливается для диалога, а не для кнопки. Когда вызывается событие click, оно передает параметр 'which', который сообщает вам, какая кнопка нажата. Чтобы отдельно добавить прослушиватель щелчка для кнопки, установите для него View.OnClickListener.

ответил blessenm 4 52011vEurope/Moscow11bEurope/MoscowFri, 04 Nov 2011 04:13:07 +0400 2011, 04:13:07

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132