android eclipse setOnClickListener

#android #eclipse #tabactivity

#Android #затмение #tabactivity

Вопрос:

Я хочу установить 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(Просмотр.OnClickListener) в представлении типа не применяется для аргументов (новый диалоговый интерфейс.OnClickListener(){})

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

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

Ответ №1:

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

 import android.view.View.OnClickListener;
 

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

редактировать Лучше неявно указать это следующим образом:

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

чтобы предотвратить возникновение таких ошибок.

Ответ №2:

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

Ответ №3:

Еще одна вещь: если вы импортировали более одного метода из 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) {

        }
    });