【问题标题】:java.lang.IllegalStateException: Could not execute method of the activityjava.lang.IllegalStateException:无法执行活动的方法
【发布时间】:2016-08-24 12:59:27
【问题描述】:

在开发过程中,也遇到过类似的问题,也因为我是新手,不知道怎么处理,先谢谢各位帮忙了! 我试图改变一些东西来重写,但一切都失败了,我不明白我在什么时候做错了

活动

public class FormActivity extends AppCompatActivity {
    private LocationManager locationManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.form);
        ///=================================
        /////Автоматическийм расчет веремени
        EditText et1 = (EditText) findViewById(R.id.formtime);
        EditText et2 = (EditText) findViewById(R.id.formdate);
        SimpleDateFormat df1 = new SimpleDateFormat("HH:mm:ss");
        SimpleDateFormat df2 = new SimpleDateFormat("yyyy-MM-dd ");
        Calendar c = Calendar.getInstance();
        String e1 = df1.format(c.getTime());
        String e2 = df2.format(c.getTime());
        et1.setText(e1);
        et2.setText(e2);
        /////Конец расчета времени
    }

    public void GeoClick(View v){
        String svcName = Context.LOCATION_SERVICE;
        locationManager = (LocationManager)getSystemService(svcName);

        Criteria criteria = new Criteria();
        criteria.setAccuracy(Criteria.ACCURACY_FINE);
        criteria.setAltitudeRequired(false);
        criteria.setBearingRequired(false);
        criteria.setSpeedRequired(false);
        criteria.setCostAllowed(true);

        String provider = locationManager.getBestProvider(criteria, true);
        Location l = locationManager.getLastKnownLocation(provider);
        updateWithNewLocation(l);
        locationManager.requestLocationUpdates(provider, 5000, 10, locationListener);
    }

    private void updateWithNewLocation(Location location) {
        TextView myLocationText;
        myLocationText = (TextView)findViewById(R.id.myLocationText);

        String latLongString = "No location found";
        String addressString = "No address found";

        if (location != null) {
            double lat = location.getLatitude();
            double lng = location.getLongitude();
            latLongString = "Lat:" + lat + "\nLong:" + lng;

            double latitude = location.getLatitude();
            double longitude = location.getLongitude();
            Geocoder gc = new Geocoder(this, Locale.getDefault());

            try {
                List<Address> addresses = gc.getFromLocation(latitude, longitude, 1);
                StringBuilder sb = new StringBuilder();
                if (addresses.size() > 0) {
                    Address address = addresses.get(0);

                    for (int i = 0; i < address.getMaxAddressLineIndex(); i++)
                        sb.append(address.getAddressLine(i)).append("\n");

                    sb.append(address.getLocality()).append("\n");
                    sb.append(address.getPostalCode()).append("\n");
                    sb.append(address.getCountryName());
                }
                addressString = sb.toString();
            } catch (IOException e) {}
        }
        myLocationText.setText("Your Current Position is:\n" +
                latLongString + "\n\n" + addressString);
    }

    private final LocationListener locationListener = new LocationListener() {
        public void onLocationChanged(Location location) {updateWithNewLocation(location);}
        public void onProviderDisabled(String provider) {}
        public void onProviderEnabled(String provider) {}
        public void onStatusChanged(String provider, int status,
                                    Bundle extras) {}
    };
}

错误

 {FATAL EXCEPTION: main                                                                  java.lang.IllegalStateException: Could not execute method of the activity
 at android.view.View$1.onClick(View.java:3591)
 at android.view.View.performClick(View.java:4084)
 at android.view.View$PerformClick.run(View.java:16966)
 at android.os.Handler.handleCallback(Handler.java:615)
 at android.os.Handler.dispatchMessage(Handler.java:92)
 at android.os.Looper.loop(Looper.java:137)
 at android.app.ActivityThread.main(ActivityThread.java:4745)
 at java.lang.reflect.Method.invokeNative(Native Method)
 at java.lang.reflect.Method.invoke(Method.java:511)
 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
 at dalvik.system.NativeStart.main(Native Method)
 Caused by: java.lang.reflect.InvocationTargetException
 at java.lang.reflect.Method.invokeNative(Native Method)
 at java.lang.reflect.Method.invoke(Method.java:511)
 at android.view.View$1.onClick(View.java:3586)
 at android.view.View.performClick(View.java:4084) 
 at android.view.View$PerformClick.run(View.java:16966) 
 at android.os.Handler.handleCallback(Handler.java:615) 
 at android.os.Handler.dispatchMessage(Handler.java:92) 
 at android.os.Looper.loop(Looper.java:137) 
 at android.app.ActivityThread.main(ActivityThread.java:4745) 
 at java.lang.reflect.Method.invokeNative(Native Method) 
 at java.lang.reflect.Method.invoke(Method.java:511) 
 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
 at dalvik.system.NativeStart.main(Native Method) 
 Caused by: java.lang.IllegalArgumentException: provider==null
 at android.location.LocationManager.getLastKnownLocation(LocationManager.java:1153)
 at ru.ochakovo.ochakoco.FormActivity.GeoClick(FormActivity.java:56)
 at java.lang.reflect.Method.invokeNative(Native Method) 
 at java.lang.reflect.Method.invoke(Method.java:511) 
 at android.view.View$1.onClick(View.java:3586) 
 at android.view.View.performClick(View.java:4084) 
 at android.view.View$PerformClick.run(View.java:16966) 
 at android.os.Handler.handleCallback(Handler.java:615) 
 at android.os.Handler.dispatchMessage(Handler.java:92) 
 at android.os.Looper.loop(Looper.java:137) 
 at android.app.ActivityThread.main(ActivityThread.java:4745) 
 at java.lang.reflect.Method.invokeNative(Native Method) 
 at java.lang.reflect.Method.invoke(Method.java:511) 
 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
 at dalvik.system.NativeStart.main(Native Method) }

【问题讨论】:

  • 您使用的是哪一种 api? compileSdkVersion 23 还是其他的??
  • 还要检查您的 GPS 是否启用,并在清单中添加权限(用户位置)
  • 可能的原因可能和这个问题一样:stackoverflow.com/questions/10687409/…
  • 它说你 provider==null ..尝试调试并检查提供程序中传递的值
  • @Nowshad 在清单中颁发了许可证。最低 API 版本 15

标签: java android


【解决方案1】:

您最有可能收到此错误,因为 GPS 提供商不可用。如果 Gps Provider 或 Network Provider 已在位置设置中启用,请让此人检查设置。希望对您有所帮助

【讨论】:

    【解决方案2】:

    我认为您的提供者为空 null 值...

    【讨论】:

      猜你喜欢
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-03
      • 2015-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多