Reputation: 1527
I have an EditText where location is typed and when the Button is clicked the loaction name is bundled and sent via intent to Details Activity where it receives the location name and gets the latitude and longitude by using Geocoder.But when I try to display it on map unfortunately I am getting a RunTimeException.Below is the code.Is that the correct way to get the latitude and longitude of a place.Please help me. I am new to Google maps.
MainActivity.java:
public class MainActivity extends AppCompatActivity {
AutoCompleteTextView textView;
ArrayAdapter<String> arrayAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.e("MainActivity:","Started");
List l = new ArrayList();
l.add("New Delhi");
l.add("Mumbai");
l.add("Chennai");
l.add("Bangalore");
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setTitle("Destination");
AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autocomplete);
arrayAdapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,l);
textView.setAdapter(arrayAdapter);
final Bundle bundle =new Bundle();
bundle.putString("places",textView.getText().toString());
Button button1 = (Button) findViewById(R.id.enter);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getApplicationContext(), Details.class);
intent.putExtras(bundle);
startActivity(intent);
}
});
}}
Details.java:(Map not included,Error at addressList which gets the location details from geocoder)
public class Details extends AppCompatActivity {
SupportMapFragment mapFragment;LatLng latLng;ArrayList<LatLng> markerPoints;LatLng from,to;Polyline polyline;ArrayList<Polyline> polylines;
private GoogleMap map;LocationManager manager;Double lat,longt;Location location;
// The minimum distance to change Updates in meters
private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; // 10 meters
// The minimum time between updates in milliseconds
private static final long MIN_TIME_BW_UPDATES = 1000 * 60 * 1; // 1 minute
boolean isGPSEnabled = false;
// flag for network status
boolean isNetworkEnabled = false;
boolean canGetLocation = false;
List<LatLng> latLngslist;
Marker marker;int i;String cityName,destination;
int start; ArrayList<LatLng> wapt;Routing routing;
Geocoder geocoder;int counter=0;
List<Address> wayptdetails;
String destinationname;
double destinationLatitude;
double destinationLongitude;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.details);
mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map1);
mapFragment.getMapAsync(this);
getLocation();
wapt=new ArrayList<LatLng>();
wayptdetails=new ArrayList<Address>();
Bundle bundle= getIntent().getExtras();
destination= bundle.getString("place");
Geocoder geocoder1=new Geocoder(this,Locale.getDefault());
try {
List<Address> addressList=geocoder1.getFromLocationName(destination,1);
destinationLatitude= addressList.get(0).getLatitude();
destinationLongitude=addressList.get(0).getLongitude();
Log.e("Destination","Location retreived");
} catch (IOException e) {
e.printStackTrace();
}
}}
Error:
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime: FATAL EXCEPTION: main
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.jobinsabu.destination/com.example.jobinsabu.destination.Details}: java.lang.IllegalArgumentException: locationName == null
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2252)
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2306)
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime: at android.app.ActivityThread.access$700(ActivityThread.java:153)
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1286)
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:99)
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime: at android.os.Looper.loop(Looper.java:176)
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5302)
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime: at java.lang.reflect.Method.invokeNative(Native Method)
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:511)
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime: at dalvik.system.NativeStart.main(Native Method)
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime: Caused by: java.lang.IllegalArgumentException: locationName == null
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime: at android.location.Geocoder.getFromLocationName(Geocoder.java:171)
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime: at com.example.jobinsabu.destination.Details.onCreate(Details.java:78)
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime: at android.app.Activity.performCreate(Activity.java:5326)
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1097)
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2215)
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2306)
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime: at android.app.ActivityThread.access$700(ActivityThread.java:153)
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1286)
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:99)
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime: at android.os.Looper.loop(Looper.java:176)
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5302)
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime: at java.lang.reflect.Method.invokeNative(Native Method)
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:511)
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime: at dalvik.system.NativeStart.main(Native Method)
Error(Edited):
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime: FATAL EXCEPTION: main
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.jobinsabu.destination/com.example.jobinsabu.destination.Details}: java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2252)
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2306)
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime: at android.app.ActivityThread.access$700(ActivityThread.java:153)
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1286)
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:99)
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime: at android.os.Looper.loop(Looper.java:176)
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5302)
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime: at java.lang.reflect.Method.invokeNative(Native Method)
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:511)
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime: at dalvik.system.NativeStart.main(Native Method)
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime: Caused by: java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime: at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251)
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime: at java.util.ArrayList.get(ArrayList.java:304)
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime: at com.example.jobinsabu.destination.Details.onCreate(Details.java:79)
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime: at android.app.Activity.performCreate(Activity.java:5326)
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1097)
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2215)
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2306)
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime: at android.app.ActivityThread.access$700(ActivityThread.java:153)
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1286)
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:99)
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime: at android.os.Looper.loop(Looper.java:176)
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5302)
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime: at java.lang.reflect.Method.invokeNative(Native Method)
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:511)
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime: at dalvik.system.NativeStart.main(Native Method)
Upvotes: 1
Views: 836
Reputation: 13358
In your code destination empty because you passed places.
bundle.putString("places",textView.getText().toString());
but received
destination= bundle.getString("place");
//change into places.
change like as
destination= bundle.getString("places");
Before Pass string check textView.getText().toString() is not empty.
Upvotes: 0
Reputation: 132992
As in Log:
java.lang.IllegalArgumentException: locationName == null
Because destination
String is empty which getting from getIntent()
.
Add places
key in Bundle with textView.getText()
value on Click of Button as:
bundle.putString("places",textView.getText().toString());
intent.putExtras(bundle);
Also use same key for getting same key for getting value in Details
Activity which is used in previous Activity.
Upvotes: 1