Android - проблема с OnClickListener

1

Я пытаюсь реализовать 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.

Спасибо!

Теги:
onclick

4 ответа

3
Лучший ответ

Удалите класс Button из вашего объявления onClickListener.

    btn.setOnClickListener(new OnClickListener(){
          @Override
          public void onClick(View v) {
              setContentView(R.layout.oggetto);
          }

        });

OnClickListener является свойством View.

  • 0
    Спасибо за ваш ответ, похоже, что это избавляет от ошибки ... но когда я запускаю приложение на эмуляторе, оно говорит мне, что приложение остановилось без всяких проблем.
  • 1
    Если вы создадите новый вопрос с помощью трассировки стека из журнала, я уверен, что кто-то может вам помочь
1

Что вы делаете внутри 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
   }

});
  • 0
    Это не верно. Пожалуйста, не отвечайте, если вы не знакомы с Android. Android технически даже не Java.
1

Когда вы реализуете onClickListener, вам необходимо переопределить метод OnClick(). Это изменит то, что произойдет, когда что-то на самом деле нажали.

Это дает вам сообщение об ошибке, потому что onClickListener является интерфейсом, и одним из условий реализации интерфейса является то, что вы должны реализовать все методы, определенные в интерфейсе. Более подробную информацию о интерфейсах можно найти в wiki: http://en.wikipedia.org/wiki/Interface_(Java)

также, ваш метод должен воспринимать представление как параметр и выглядеть примерно так:

public void onClick(View v){
 //Handle Click
}
0

Обновите свой код:

       btn.setOnClickListener(new OnClickListener(){

         public void onClick(View v) {
              setContentView(R.layout.oggetto);
          }

        });

Ещё вопросы

Сообщество Overcoder
Наверх
Меню