2017-02-24 89 views
0

我有一些代碼在地圖上進行搜索(至少應該這樣,但是應用程序在您點擊按鈕時會崩潰)。這是一個Android應用程序。按鈕無法找到onMapSearch功能

的按鈕和搜索欄的XML是在這裏:

<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" /> 

然後爲按鈕功能的功能是在這裏:

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中說,該按鈕未能找到函數onMapSearch,有什麼建議,爲什麼? logcat的位置:

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

請張貼您的Logcat。還發布您的代碼爲您的按鈕的'onClickListener'。謝謝 –

+0

它在片段中聲明嗎? – nikis

+0

請勿使用XML點擊方法。只需在Java中完成。 –

回答

0

的onClick會在活動的方法不是在片段,如果該方法是在片段中聲明你應該使用button.setOnClickListener

如果你希望你的代碼是「好」,你可能看看ButterKnife