0

好吧,目前我正在做的是试图添加一个简单的应用程序,报告和查找故障汽车。在第三个屏幕上,我让用户输入一个地址,单击搜索按钮,一旦找到,按钮上的小地图就会移动到该地点。如果用户满意,他可以点击提交按钮并处理到下一个屏幕...(提交按钮还没有完成,我只是测试地图)谷歌地图有错误的搜索功能(Android Studios)

我遵循了这个步骤YouTube用户here ...我还以为我拥有了一切想通了......然而,当我测试我的应用程序,我试着输入一些简单的像纽约,我也得到一个致命的错误消息...

E/AndroidRuntime: FATAL EXCEPTION: main 
       Process: com.example.greyknightdante.roadsideassistance, PID: 7950 
       java.lang.IllegalStateException: Could not execute method for android:onClick 
        at android.view.View$DeclaredOnClickListener.onClick(View.java:4698) 
        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) 
       Caused by: java.lang.reflect.InvocationTargetException 
        at java.lang.reflect.Method.invoke(Native Method) 
        at android.view.View$DeclaredOnClickListener.onClick(View.java:4693) 
        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)  
       Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference 
        at com.example.greyknightdante.roadsideassistance.MapsActivity.onSearch(MapsActivity.java:45) 
        at java.lang.reflect.Method.invoke(Native Method)  
        at android.view.View$DeclaredOnClickListener.onClick(View.java:4693)  
        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)  

我对Android Studios仍然很陌​​生,为了让它脱颖而出,我现在也很不舒服,并且无法直视我感到头痛的问题(来自寒冷和当前的应用程序).​​....我有一个星期来完成这个应用程序,所以我现在正忙着...

我不能完全弄清楚是什么导致错误,以及如何解决它...我有一种感觉,它可能是onClick我的搜索按钮,但我不能确定...有人可以帮助我?任何帮助,将不胜感激!

我的继承人为Java活动

package com.example.greyknightdante.roadsideassistance; 

import android.content.Intent; 

import android.location.Address; 
import android.location.Geocoder; 
import android.support.v4.app.FragmentActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.EditText; 
import android.widget.TextView; 

import com.google.android.gms.maps.CameraUpdateFactory; 
import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.OnMapReadyCallback; 
import com.google.android.gms.maps.SupportMapFragment; 
import com.google.android.gms.maps.model.LatLng; 
import com.google.android.gms.maps.model.MarkerOptions; 

import java.io.IOException; 
import java.util.List; 

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback{ 

private GoogleMap mMap; 
public String problem; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_gps); 
    // Obtain the SupportMapFragment and get notified when the map is ready to be used. 
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() 
      .findFragmentById(R.id.map); 
    mapFragment.getMapAsync(this); 

    //obtain previous data 
    Intent intent = getIntent(); 
    problem = intent.getStringExtra(ReportActivity.EXTRA_MESSAGE); 

} 

public void onSearch(View view){ 
    EditText location_input = (EditText) view.findViewById(R.id.locationInputText); 
    String location = location_input.getText().toString(); 
    List<Address> addressList = null; 

    if(location != null || location.equals("")) { 
     Geocoder geocoder = new Geocoder(this); 
     try { 
      addressList = geocoder.getFromLocationName(location, 1); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

     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)); 
    } 

} 
@Override 
public void onMapReady(GoogleMap googleMap) { 
    mMap = googleMap; 

    // Add a marker in Sydney and move the camera 
    LatLng sydney = new LatLng(-34, 151); 
    mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney")); 
    mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney)); 
} 

和我的继承人的地图区域和搜索功能代码...

<RelativeLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:id="@+id/gpsLayout"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="What is your location?" 
     android:id="@+id/locationTextView" 
     android:textSize="30dp" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" /> 

    <EditText 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:inputType="textPostalAddress" 
     android:ems="10" 
     android:id="@+id/locationInputText" 
     android:text="" 
     android:hint="Enter Location..." 
     android:layout_below="@+id/locationTextView" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="27dp" 
     android:background="@color/white" 
     android:textSize="25dp" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Search" 
     android:id="@+id/enterGPSButton" 
     android:layout_below="@+id/locationInputText" 
     android:layout_centerVertical="true" 
     android:layout_centerHorizontal="true" 
     android:onClick="onSearch"/> 

    <RelativeLayout 
     android:layout_width="fill_parent" 
     android:layout_height="250dp" 
     android:layout_below="@+id/locationInputText" 
     android:layout_marginTop="55dp" 
     android:id="@+id/mapLayout"> 
     <fragment xmlns:android="http://schemas.android.com/apk/res/android" 
      xmlns:map="http://schemas.android.com/apk/res-auto" 
      xmlns:tools="http://schemas.android.com/tools" 
      android:id="@+id/map" 
      android:name="com.google.android.gms.maps.SupportMapFragment" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      tools:context="com.example.greyknightdante.roadsideassistance.MapsActivity"/> 

    </RelativeLayout> 

回答

0

问题是在这一行:

EditText location_input = (EditText) view.findViewById(R.id.locationInputText); 

此处Editext未附加到onSearch(View view)

所以更改:

 EditText location_input; //declare globally 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_gps); 
    location_input = (EditText)findViewById(R.id.locationInputText); //initialize here 
    } 

现在,在您onSearch()方法

public void onSearch(View view){ 
String location = location_input.getText().toString(); 
//rest of the code 
} 
+0

THANK YOU SO MUCH! –

+0

@RamonChristianBustamante将答案标记为正确,如果它通过单击蜱标志有帮助 – rafsanahmad007