Я пытаюсь реализовать OnClickListener на некоторых кнопках, которые повторяются в GridView, но Eclipse дает мне ошибку в строке btn.setOnClickListener.
Это ошибка:
1 method(s) to implement:
- android.view.View.OnClickListener.onClick()
И это код:
package com.example.convert;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.GridView;
public class convert extends Activity {
//private ListView List;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String [] elenco = {
"ciao","questo","è","un esempio","Configurazione"
};
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,R.layout.oggetto,R.id.testogg,elenco);
GridView gridview = (GridView) findViewById(R.id.gridview);
gridview.setAdapter(arrayAdapter);
Button btn = (Button) (findViewById(R.id.testogg));
btn.setOnClickListener(new Button.OnClickListener(){
OnClickListener(View v) {
setContentView(R.layout.oggetto);
}
});
}
}
Я не понимаю, что это значит, я новичок в java.
Спасибо!
Удалите класс Button из вашего объявления onClickListener.
btn.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
setContentView(R.layout.oggetto);
}
});
OnClickListener является свойством View
.
Что вы делаете внутри setOnClickListener, похоже, создаете анонимный класс (не знаете андроида api). Это означает, что Button.OnClickListener - это интерфейс или абстрактный класс, который определяет некоторые нереализованные методы, и вы определяете новый класс, который реализует этот интерфейс, поэтому вы должны определить реализацию для этого метода. В этом случае кажется, что существует метод onClick(), который вы должны определить (имеет смысл, так как он прослушиватель кликов, вам нужно сказать ему, что делать, когда происходит событие клика).
Итак, вам нужно сделать что-то вроде:
btn.setOnClickListener(new Button.OnClickListener(){
OnClickListener(View v) {
setContentView(R.layout.oggetto);
}
public void onClick() {
// what to do on a click event
}
});
Когда вы реализуете onClickListener, вам необходимо переопределить метод OnClick(). Это изменит то, что произойдет, когда что-то на самом деле нажали.
Это дает вам сообщение об ошибке, потому что onClickListener является интерфейсом, и одним из условий реализации интерфейса является то, что вы должны реализовать все методы, определенные в интерфейсе. Более подробную информацию о интерфейсах можно найти в wiki: http://en.wikipedia.org/wiki/Interface_(Java)
также, ваш метод должен воспринимать представление как параметр и выглядеть примерно так:
public void onClick(View v){
//Handle Click
}
Обновите свой код:
btn.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
setContentView(R.layout.oggetto);
}
});