Android: перемещение по кнопке () для кнопки - PullRequest
2 голосов
/ 13 апреля 2011

У меня есть этот xml-Layout:

 <?xml version="1.0" encoding="utf-8"?>
         <LinearLayout android:orientation="vertical"
          xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="fill_parent" android:layout_height="fill_parent">

            <LinearLayout android:orientation="vertical" android:background="@color/white" android:layout_width="fill_parent" android:layout_height="200px"> 

                <TextView 
                    android:layout_x="0dp" 
                    android:layout_y="10dp" 
                    android:layout_gravity="left"           
                    android:layout_width="wrap_content" 
                    android:layout_height="wrap_content"
                    android:textSize="15dp"
                    android:textColor="@color/white"
                    android:text="Name: " />

                <EditText 
                    android:layout_x = "20px" 
                    android:layout_y = "10px"
                    android:layout_gravity="left"
                    android:textSize="15sp" 
                    android:id="@+id/et_username" android:textColor="@color/black"
                    android:layout_width="150px" 
                    android:layout_height="50px" />

                <Button 
                     android:layout_x = "200px" 
                     android:layout_y = "10px" 
                     android:layout_gravity="left"
                     android:textSize="16sp"  
                     android:layout_width="96px" 
                     android:layout_height="50px" 
                     android:background ="@drawable/login"
                     android:id="@+id/btn_login"  
                     android:textColor="@color/white"
                     android:text="next" 
                     android:onClick="onLoginClicked" />

            </AbsoluteLayout>
    </LinearLayout>

Java-файл:

public class ButtonAdapter extends BaseAdapter {

...

public View getView(int position, View convertView, ViewGroup parent) {
   return LayoutInflater.from(mContext).inflate(R.layout.custom_keyboard, null);
}

public void onLoginClicked(View v) {
   Button button = (Button) v;
   String key = button.getText().toString();
   anotherMethod(key, false);
}
...
}

, и я использую адаптер здесь:

GridView gridview = new GridView(context);
gridview2.setAdapter(new KeyboardAdapter(1, context)); 

может кто-нибудь сказатьмне, почему я получаю следующую ошибку, когда нажимаю кнопку?

java.lang.IllegalStateException: Could not find a method onLoginClicked(View) in the activity class MainActivity for onClick handler on view class android.widget.Button

Ответы [ 3 ]

3 голосов
/ 13 апреля 2011

Это происходит потому, что в вашем xml есть следующее:

  <Button 
                 android:layout_x = "200px" 
                 android:layout_y = "10px" 
                 android:layout_gravity="left"
                 android:textSize="16sp"  
                 android:layout_width="96px" 
                 android:layout_height="50px" 
                 android:background ="@drawable/login"
                 android:id="@+id/btn_login"  
                 android:textColor="@color/white"
                 android:text="next" 
                 android:onClick="onLoginClicked" />

Последняя строка означает, что при нажатии этой кнопки будет вызван метод.Этот метод называется «onLoginClicked», он должен быть открытым и иметь параметр типа View и быть определенным в классе Activity.

Итак, перейдите к своей деятельности и напишите что-то вроде:

public void onLoginClicked(View v) {
    //toast, log, open activity, etc
}
2 голосов
/ 13 апреля 2011

Почему вы пытаетесь сделать код более сложным.Просто попробуйте сделать это:

Button b=(Button)findViewId(R.id.btn_login);
b.setOnClickListener(new OnClickListener(){
                //perform your action here            
            });
0 голосов
/ 13 апреля 2011

Я бы удалил параметр onClick из вашего XML-макета и обработал бы щелчок со слушателем. Добавьте этот код в метод onCreate () в своей деятельности:

Button button = (Button)findViewById(R.id.btn_login);
            button.setOnClickListener(new OnClickListener(){
                String key = button.getText().toString();
                   anotherMethod(key, false);               
            });
...