2017-02-24 4 views
0

Ich habe etwas Code, der eine Suche in einer Karte (zumindest sollte es, aber die App stürzt ab, wenn Sie auf die Schaltfläche klicken). Dies ist eine Android-App.Button kann nicht finden onMapSearch-Funktion

Die XML für die Schaltfläche und die Suchleiste ist hier:

<EditText 
      android:id="@+id/editText" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="4" 
      android:hint="Search Location Here" /> 
     <Button 
      android:id="@+id/search_button" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="0.5" 
      android:onClick="onMapSearch" 
      android:text="Search" /> 

Und dann die Funktion für die Button-Funktionalität ist hier:

public void onMapSearch(View view) { 
    EditText locationSearch = (EditText) findViewById(R.id.editText); 
    String location = locationSearch.getText().toString(); 
    Geocoder geocoder = new Geocoder(this); 
    List<android.location.Address> addressList = null; 

    try { 
     addressList = geocoder.getFromLocationName(location, 1); 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    android.location.Address address = addressList.get(0); 
    LatLng latLng = new LatLng(address.getLatitude(), address.getLongitude()); 
    mMap.addMarker(new MarkerOptions().position(latLng).title("Marker")); 
    mMap.animateCamera(CameraUpdateFactory.newLatLng(latLng)); 
} 

Logcat sagt, dass die Taste der finden ist fehlgeschlagen Funktion onMapSearch, irgendwelche Vorschläge, warum? Logcat hier:

E/AndroidRuntime: FATAL EXCEPTION: main 
        Process: pkc.trafficquest.sccapstone.trafficquest, PID: 3488 
        java.lang.IllegalStateException: Could not find method MapsActivity.onMapSearch(View) in a parent or ancestor Context for android:onClick attribute defined on view class android.support.v7.widget.AppCompatButton with id 'search_button' 
         at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.resolveMethod(AppCompatViewInflater.java:327) 
         at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:284) 
         at android.view.View.performClick(View.java:5610) 
         at android.view.View$PerformClick.run(View.java:22265) 
         at android.os.Handler.handleCallback(Handler.java:751) 
         at android.os.Handler.dispatchMessage(Handler.java:95) 
         at android.os.Looper.loop(Looper.java:154) 
         at android.app.ActivityThread.main(ActivityThread.java:6077) 
         at java.lang.reflect.Method.invoke(Native Method) 
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) 
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) 
E/DynamiteModule: Failed to load module descriptor class: Didn't find class "com.google.android.gms.dynamite.descriptors.com.google.firebase.auth.ModuleDescriptor" on path: DexPathList[[zip file "/data/app/pkc.trafficquest.sccapstone.trafficquest-1/base.apk"],nativeLibraryDirectories=[/data/app/pkc.trafficquest.sccapstone.trafficquest-1/lib/x86, /system/lib, /vendor/lib]] 
+0

Bitte veröffentlichen Sie Ihre Logcat. Veröffentlichen Sie auch Ihren Code für den OnClickListener Ihrer Schaltfläche. Danke –

+0

Ist es in Fragment deklariert? – nikis

+0

Verwenden Sie keine XML-Klickmethoden. Mach es einfach in Java. –

Antwort

0

onClick für das Verfahren in Aktivität sieht nicht in Fragmente, wenn das Verfahren in einem Fragment deklariert wird, sollten Sie button.setOnClickListener

verwenden Wenn Sie Ihren Code wollen „besser“ sein, Sie können Werfen Sie einen Blick auf ButterKnife