2011-01-03 2 views
1

Я пытаюсь реализовать OnClickListener на некоторых кнопках, которые повторяются в GridView, но Eclipse дает мне ошибку в строке btn.setOnClickListener.Android - проблема OnClickListener

Это ошибка:

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.

Спасибо!

ответ

3

Удалить класс Button из вашей декларации onClickListener.

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

     }); 

OnClickListener является собственностью View.

+0

Спасибо за ваш ответ, похоже, избавиться от ошибки ... но когда я запустил приложение на эмуляторе, он сказал мне, что приложение прекратило без изменений. –

+1

Если вы создаете новый вопрос с помощью stacktrace из журнала, то я уверен, что кто-то может помочь вам –

1

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

Это сообщение об ошибке, потому что onClickListener является интерфейсом, и одним из условий реализации интерфейса является то, что вы должны реализовать все методы, определенные в интерфейсе. Более подробную информацию о интерфейсах можно найти на вики: 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); 
      } 

     }); 
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. – Falmarri

Смежные вопросы