Android затмение setOnClickListener - PullRequest
       5

Android затмение setOnClickListener

0 голосов
/ 01 ноября 2011

Я хочу установить OnClickListener на моем button3.

Это действие на второй вкладке в TabHost.

import android.content.DialogInterface.OnClickListener;    

public class tab_act extends Activity {
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.second_tab);

        findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
            public void onClick(View v) {

            }
        });

    }
}

XML:

    <Button
    android:id="@+id/button3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:drawableLeft="@drawable/icon_search"
    android:drawablePadding="15dip"
    android:text="Найти совпадения" />

И я получаю ошибку:

Метод setOnClickListener (View.OnClickListener) в типе View не применимо для аргументов (новый DialogInterface.OnClickListener () {})

в этой строке:

findViewById(R.id.button1).setOnClickListener(new OnClickListener() {

Ответы [ 3 ]

2 голосов
/ 01 ноября 2011

Вы неправильно импортировали OnClickListener - это должно быть

import android.view.View.OnClickListener;

вместо import android.content.DialogInterface.OnClickListener;.Также вы устанавливаете OnClickListener для кнопки с идентификатором button1, в то время как предоставленный вами xml объявляет кнопку с идентификатором button3

edit Лучше неявно указывать ее так:

findViewById(R.id.button3).setOnClickListener(new View.OnClickListener() {
...
});

для предотвращения возникновения таких ошибок.

0 голосов
/ 15 апреля 2013

Еще одна вещь: если вы импортировали более одного метода из 2 разных мест (например, вы импортировали и использовали в одном и том же упражнении и android.content.DialogInterface.OnClickListener, и android.view.View.OnClickListener), вы не можете использовать сочетания клавиш оба раза при вызове OnClickListener, и вам иногда придется вызывать именно так:

findViewById(R.id.button1).setOnClickListener(new android.view.View.OnClickListener() {
        public void onClick(View v) {

        }
    });
0 голосов
/ 01 ноября 2011

Вы делаете findViewById(R.id.button1), и вы должны делать findViewById(R.id.button3)

...