setOnClickListener не работает и выдает ошибку - PullRequest
0 голосов
/ 13 июля 2011

Ниже моя программа, и я получаю эту ошибку:

Description Resource    Path    Location    Type
The method setOnClickListener(View.OnClickListener) in the type View is not applicable for the arguments (welcome)  welcome.java    /testcalculator/src/com/testcalculator  line 31 Java Problem

welcome.java

package com.testcalculator;
public class welcome extends Activity{
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
        setContentView(R.layout.welcome1);
        Button playBtn = (Button) findViewById(R.id.playBtn);
        playBtn.setOnItemClickListener();
        Button exitBtn = (Button) findViewById(R.id.exitBtn);
        exitBtn.setOnClickListener(this);
    }
    public void onClick(View v) {
        Intent i;
        switch (v.getId()){
        case R.id.playBtn :
            i = new Intent(this, testcalculator.class);
            startActivity(i);
            break;
        case R.id.exitBtn :
            finish();
            break;
        }
    }
   }

ПроблемаУ меня есть все необходимые параметры импорта в моей проблеме, но все равно я получаю сообщение об ошибке.

Ответы [ 8 ]

1 голос
/ 13 июля 2011

Вы передаете свой класс Activity как OnClickListener в этой строке:

exitBtn.setOnClickListener(this);

Однако ваш класс должен явно объявить, что он реализует интерфейс View.OnCLickListener.Измените строку объявления класса следующим образом:

public class welcome extends Activity implements OnClickListener

Обратите внимание еще на несколько вещей:

Вы написали playBtn.setOnItemClickListener().Возможно, вы имели в виду playBtn.setOnClickListener(this)?Кнопки не имеют OnItemClickListeners

Вы также можете установить OnClickListener без того, чтобы класс активности сам реализовывал интерфейс, объявив анонимный класс.Вот так:

playBtn.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
        // playBtn code
    }
});

exitBtn.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
        // exitBtn code
    }
});

Этот способ используется чаще, потому что он более читабелен.Отделяя код кнопки onClick, вы можете легко определить, какая кнопка что делает, в отличие от помещения всего этого в один метод и реализации самого класса OnClickListener.

0 голосов
/ 02 июня 2013

Вы пишете эту строку поверх основной деятельности и внедряете onClickListener,

public class welcome extends Activity implements OnClickListener
0 голосов
/ 02 июня 2013

Импортируйте следующее:

import android.view.View.OnClickListener;
0 голосов
/ 14 июля 2011

Вам нужно написать

playBtn.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
        // code here
    }
});

и для той же кнопки тоже. Я думаю, что это будет лучше, чем ваша версия. :)

0 голосов
/ 13 июля 2011

Попробуйте вместо этого:

public void onCreate(Bundle savedInstanceState)
   {
   super.onCreate(savedInstanceState);
    setContentView(R.layout.welcome1);


    //////// MENU  //////////
    Button playBtn = (Button) findViewById(R.id.playBtn);
    playBtn.setOnItemClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            i = new Intent(this, testcalculator.class);
            startActivity(i);
        }
    });

    Button exitBtn = (Button) findViewById(R.id.exitBtn);
    exitBtn.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            finish();
        }
    });
}

Или измените свой класс для реализации OnClickListener, например: public class welcome extends Activity implements OnClickListener

0 голосов
/ 13 июля 2011

Если вы хотите использовать this в качестве exitBtn.setOnClickListener(this);, вы должны объявить, что ваша активность будет реализовывать интерфейс OnClickListener

public class welcome extends Activity implements OnClickListener {
...
}
0 голосов
/ 13 июля 2011

Вы устанавливаете общий метод onClick для обоих классов OnClickListener, что неправильно. Попробуйте использовать два разных метода onClick для класса OnClickListener обеих кнопок.

0 голосов
/ 13 июля 2011
Button playBtn = (Button) findViewById(R.id.playBtn);
playBtn.setOnItemClickListener();

Должно быть установлено значение OnClickListener (this), как это сделано для кнопки выхода.Кнопка выхода работает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...