Display Error Cause: java.lang.reflect.InvocationTargetException

When I click the button (it is called "current location"), it should display the current location (lat and long) in text form (with the name "tvAddress"). But this does not work as I expect. It gives me errors. The following are errors. Can you help me? Pls

Mistake:

02-05 23:37:22.429: E/AndroidRuntime(20293): FATAL EXCEPTION: main 02-05 23:37:22.429: E/AndroidRuntime(20293): java.lang.IllegalStateException: Could not execute method of the activity 02-05 23:37:22.429: E/AndroidRuntime(20293): at android.view.View$1.onClick(View.java:3680) 02-05 23:37:22.429: E/AndroidRuntime(20293): at android.view.View.performClick(View.java:4191) 02-05 23:37:22.429: E/AndroidRuntime(20293): at android.view.View$PerformClick.run(View.java:17229) 02-05 23:37:22.429: E/AndroidRuntime(20293): at android.os.Handler.handleCallback(Handler.java:615) 02-05 23:37:22.429: E/AndroidRuntime(20293): at android.os.Handler.dispatchMessage(Handler.java:92) 02-05 23:37:22.429: E/AndroidRuntime(20293): at android.os.Looper.loop(Looper.java:137) 02-05 23:37:22.429: E/AndroidRuntime(20293): at android.app.ActivityThread.main(ActivityThread.java:4960) 02-05 23:37:22.429: E/AndroidRuntime(20293): at java.lang.reflect.Method.invokeNative(Native Method) 02-05 23:37:22.429: E/AndroidRuntime(20293): at java.lang.reflect.Method.invoke(Method.java:511) 02-05 23:37:22.429: E/AndroidRuntime(20293): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038) 02-05 23:37:22.429: E/AndroidRuntime(20293): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805) 02-05 23:37:22.429: E/AndroidRuntime(20293): at dalvik.system.NativeStart.main(Native Method) 02-05 23:37:22.429: E/AndroidRuntime(20293): Caused by: java.lang.reflect.InvocationTargetException 02-05 23:37:22.429: E/AndroidRuntime(20293): at java.lang.reflect.Method.invokeNative(Native Method) 02-05 23:37:22.429: E/AndroidRuntime(20293): at java.lang.reflect.Method.invoke(Method.java:511) 02-05 23:37:22.429: E/AndroidRuntime(20293): at android.view.View$1.onClick(View.java:3675) 02-05 23:37:22.429: E/AndroidRuntime(20293): ... 11 more 02-05 23:37:22.429: E/AndroidRuntime(20293): Caused by: java.lang.NullPointerException 02-05 23:37:22.429: E/AndroidRuntime(20293): at com.mamun.tasktest.MapActivity.marker(MapActivity.java:129) 02-05 23:37:22.429: E/AndroidRuntime(20293): ... 14 more 

MapActivity.java

 package com.mamun.tasktest; import java.io.IOException; import java.util.ArrayList; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.location.Address; import android.location.Geocoder; import android.location.Location; import android.location.LocationManager; import android.os.Bundle; import android.provider.Settings; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.GooglePlayServicesClient; import com.google.android.gms.location.LocationClient; import com.google.android.gms.location.LocationListener; import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.MapFragment; import com.google.android.gms.maps.GoogleMap.OnMarkerDragListener; import com.google.android.gms.maps.model.BitmapDescriptorFactory; import com.google.android.gms.maps.model.LatLng; import com.google.android.gms.maps.model.Marker; import com.google.android.gms.maps.model.MarkerOptions; public class MapActivity extends Activity implements GooglePlayServicesClient.ConnectionCallbacks, GooglePlayServicesClient.OnConnectionFailedListener, LocationListener { private LocationManager manager; private TextView tvAddress; private Button btncurrent; private LocationClient locationClient; private GoogleMap googleMap; private MapFragment mapFragment; @Override protected void onCreate(Bundle savedInstanceState) { manager = (LocationManager) getSystemService(LOCATION_SERVICE); tvAddress = (TextView) findViewById(R.id.tvaddress); btncurrent= (Button)findViewById(R.id.btncurrent super.onCreate(savedInstanceState); setContentView(R.layout.map); locationClient = new LocationClient(this, this, this); } public void marker(View v) { Location currentLocation = locationClient.getLastLocation(); tvAddress.setText(currentLocation.getLatitude()+" , "+ currentLocation.getLongitude()); Geocoder geocoder = new Geocoder(this); try { ArrayList<Address> addresses = (ArrayList<Address>) geocoder.getFromLocation(currentLocation.getLatitude(), currentLocation.getLongitude(), 5); Address addr = addresses.get(0); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); locationClient.connect(); } @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); locationClient.disconnect(); } @Override public void onLocationChanged(Location location) { // TODO Auto-generated method stub } @Override public void onConnectionFailed(ConnectionResult result) { // TODO Auto-generated method stub } @Override public void onConnected(Bundle connectionHint) { } @Override public void onDisconnected() { // TODO Auto-generated method stub } } 

map.xml

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" > <EditText android:id="@+id/etSearch" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:hint="Search your location" > <requestFocus /> </EditText> <TextView android:id="@+id/tvaddress" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <Button android:id="@+id/btncurrent" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="marker" android:text="Current Location" android:layout_marginLeft="98dp" /> <Button android:id="@+id/btnsave" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Save" /> </LinearLayout> </LinearLayout> <FrameLayout android:id="@+id/map_container" android:layout_width="match_parent" android:layout_height="match_parent" > <fragment android:id="@+id/maps" android:layout_width="match_parent" android:layout_height="match_parent" class="com.google.android.gms.maps.MapFragment" /> </FrameLayout> </LinearLayout> 
+7
java android
source share
3 answers

You call findViewById before setting up the view, so when you call tvAddress.setText , tvAddress is null. Start with this code:

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.map); manager = (LocationManager) getSystemService(LOCATION_SERVICE); tvAddress = (TextView) findViewById(R.id.tvaddress); btncurrent= (Button)findViewById(R.id.btncurrent); locationClient = new LocationClient(this, this, this); } 

In addition, you made a mistake in the error, the real reason:

 Caused by: java.lang.NullPointerException at com.mamun.tasktest.MapActivity.marker(MapActivity.java:129) 

Take the time to carefully read the stack trace and find the places where they point to the classes you wrote, it is always useful to start an error investigation;)

+5
source share

Your first two lines in the onCreate method should be as follows:

 super.onCreate(savedInstanceState); setContentView(R.layout.map); 
+1
source share

It’s just that you mistakenly initialized your views. Since you can only access views after the setContentView() method, and you have done this completely the opposite, so its throwing error.

Just change onCreate() as follows:

  @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.map); manager = (LocationManager) getSystemService(LOCATION_SERVICE); tvAddress = (TextView) findViewById(R.id.tvaddress); btncurrent= (Button)findViewById(R.id.btncurrent); 
0
source share

All Articles