gpt4 book ai didi

java - 显示由 : java. lang.reflect.InvocationTargetException 引起的错误

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:06:51 30 4
gpt4 key购买 nike

当我按下按钮(名为“当前位置”)时,它应该在 TextView (名为“tvAddress”)上显示当前位置(纬度和经度)。但它没有像我预期的那样工作。它给我错误。错误在下面给出。任何人都可以帮助我吗

错误是:

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>

最佳答案

您在设置 View 之前调用了findViewById,因此当您调用tvAddress.setText 时,tvAddress 为空。改为从这段代码开始:

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


}

还有,你写错了,真正的原因是这样的:

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

花点时间仔细阅读堆栈跟踪并寻找它指向您编写的类的地方,它始终是调查错误的好起点;)

关于java - 显示由 : java. lang.reflect.InvocationTargetException 引起的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21598165/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com