2016-05-25 15 views
1

content_main.xmlAndroid onClick Funktion funktioniert nicht

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/beer_btn" 
    android:id="@+id/button" 
    android:layout_below="@+id/color" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:onClick="onClickFindBeer"/> 

Java-Datei

public class FindBeerActivity extends Activity { 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.content_main); 
} 
public void onClickFindBeer(View view){ 
    TextView brands=(TextView)findViewById(R.id.brands); 
    Spinner color=(Spinner)findViewById(R.id.color); 
    String beerType=String.valueOf(color.getSelectedItem()); 
    brands.setText(beerType); 
} 

dort Hallo. Während der Ausführung dieses Codes Die Button Aktion funktioniert nicht .. Die App stürzt ab. Ich kann keinen Fehler finden. Ich habe diesen Code von Head Erste Android-Entwicklung Tutorial.

Jemand bitte den Fehler finden und helfen Sie mir

hier ist das Fehlerprotokoll

05-26 09:34:30.929 19451-19451/com.example.devan.layouttut E/AndroidRuntime: FATAL EXCEPTION: main 
                     Process: com.example.devan.layouttut, PID: 19451 
                     java.lang.IllegalStateException: Could not find method onClickFindBeer(View) in a parent or ancestor Context for android:onClick attribute defined on view class android.support.v7.widget.AppCompatButton with id 'button' 
                      at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.resolveMethod(AppCompatViewInflater.java:325) 
                      at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:284) 
                      at android.view.View.performClick(View.java:5204) 
                      at android.view.View$PerformClick.run(View.java:21153) 
                      at android.os.Handler.handleCallback(Handler.java:739) 
                      at android.os.Handler.dispatchMessage(Handler.java:95) 
                      at android.os.Looper.loop(Looper.java:148) 
                      at android.app.ActivityThread.main(ActivityThread.java:5417) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
+1

die Log-Nachricht senden –

+0

Versuchen Sie 'String beerType = color.getSelectedItem(). ToString();' –

+1

Sie sollten wirklich die Protokollnachricht veröffentlichen. Ich habe es gerade getestet und alles funktioniert gut. –

Antwort

0

Ihre Frage SO nicht sehr ideal ist und es gibt eine Menge Tutorials hier und da darüber, wie die Arbeit mit einem Klick auf Android.

Aber wie auch immer, hier ist, wie Sie die onClick auf einer Schaltfläche implementieren können.

In Ihrer FindBeerActivity entfernen Sie die onClickFindBeer Funktion.

public class FindBeerActivity extends Activity { 

    // Get the Button variable first 
    private Button myButton; 
    private TextView brands; 
    private Spinner color; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.content_main); 

     myButton = (Button) findViewById(R.id.my_button); 
     brands = (TextView) findViewById(R.id.brands); 
     color = (Spinner) findViewById(R.id.color); 

     myButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       String beerType=String.valueOf(color.getSelectedItem()); 
       brands.setText(beerType); 
       Toast.makeText(this,"Clicked", Toast.LENGTH_LONG).show(); 
      } 
     }); 
    } 
} 

Von Ihrem content_main.xml die onClick="onClickFindBeer" entfernen.

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/beer_btn" 
    android:id="@+id/my_button" 
    android:layout_below="@+id/color" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true"/> 

Es gibt natürlich auch andere Möglichkeiten onClick eine Taste zu implementieren, aber ich denke, das ist die einfachste ist.

+0

funktioniert nicht .. :( dort ist keine Funktion für die Schaltfläche – Dfx

+0

Versuchen Sie den aktualisierten Code –

+0

Welche Funktion wird ausgeführt, während Sie auf die Schaltfläche klicken .. ??? – Dfx