Android - проблема с OnClickListener - PullRequest
1 голос
/ 03 января 2011

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

Спасибо!

Ответы [ 4 ]

3 голосов
/ 03 января 2011

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

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

        });

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

1 голос
/ 03 января 2011

То, что вы делаете внутри setOnClickListener, похоже, создает анонимный класс (не знаю API Android). Это означает, что Button.OnClickListener - это интерфейс или абстрактный класс, который определяет некоторые не реализованные методы, и вы определяете новый класс, который реализует этот интерфейс, поэтому вы должны определить реализацию для этого метода. В этом случае кажется, что есть метод onClick (), который вы должны определить (имеет смысл, так как это слушатель по нажатию, вам нужно указать ему, что делать, когда происходит событие click).

Так что вам нужно сделать что-то вроде:

btn.setOnClickListener(new Button.OnClickListener(){

   OnClickListener(View v) {
       setContentView(R.layout.oggetto);
   }

   public void onClick() {
       // what to do on a click event
   }

});
1 голос
/ 03 января 2011

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

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

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

public void onClick(View v){
 //Handle Click
}
0 голосов
/ 03 января 2011

Пожалуйста, обновите ваш код:

       btn.setOnClickListener(new OnClickListener(){

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

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