Java 致命异常:AsyncTask#1如何修复?

Java 致命异常:AsyncTask#1如何修复?,java,android,Java,Android,很抱歉,我刚刚学习使用AsyncTask,但我在运行代码时遇到了问题 我有三节课 RestClient的第一个类 public class LoginPembayaran { private static final String urlServer = "https://webservicetagihan.herokuapp.com"; RestTemplate restTemplate = new RestTemplate(); public void login(String use

很抱歉,我刚刚学习使用AsyncTask,但我在运行代码时遇到了问题

我有三节课 RestClient的第一个类

public class LoginPembayaran {

private static final String urlServer = "https://webservicetagihan.herokuapp.com";

RestTemplate restTemplate = new RestTemplate();

public void login(String username, String password) throws GagalLoginException{
    Map<String, String> logindata = new HashMap<>();
    logindata.put("username",username);
    logindata.put("password",password);

    Map<String,Object> hasil = restTemplate.postForObject(urlServer + "/api/login",logindata,Map.class,new Object[]{});

    if (hasil == null ){
        throw new GagalLoginException("Respon valid");
    }

    if (!(Boolean)hasil.get("sukses")){
        throw new GagalLoginException("user name / password salah");
    }


}
}

我的日志

    03-18 09:57:35.780 30964-31227/com.khoiron.apptagihan E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
  Process: com.khoiron.apptagihan, PID: 30964
  java.lang.RuntimeException: An error occured while executing doInBackground()
      at android.os.AsyncTask$3.done(AsyncTask.java:300)
      at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
      at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
      at java.util.concurrent.FutureTask.run(FutureTask.java:242)
      at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
      at java.lang.Thread.run(Thread.java:841)
   Caused by: java.lang.NullPointerException
      at com.khoiron.apptagihan.RestClient.LoginPembayaran.login(LoginPembayaran.java:31)
      at com.khoiron.apptagihan.Fragment.loginAktifity$1$1.doInBackground(loginAktifity.java:48)
      at com.khoiron.apptagihan.Fragment.loginAktifity$1$1.doInBackground(loginAktifity.java:41)
      at android.os.AsyncTask$2.call(AsyncTask.java:288)
      at java.util.concurrent.FutureTask.run(FutureTask.java:237)
      at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) 
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
      12q
      at java.lang.Thread.run(Thread.java:841)
请帮助我,如果是第31行,请引导我

if (!(boolean)hasil.get("sukses")){
因此,您使用label输入了一个错误,get()返回null并将其转换为boolean cause NPE。

如果是第31行

if (!(boolean)hasil.get("sukses")){

因此,您键入了一个label,get()返回null并将其强制转换为boolean cause NPE。

从异常日志中,您可以看到异常源于
LoginPembayaran.login
,第31行

Caused by: java.lang.NullPointerException
      at com.khoiron.apptagihan.RestClient.LoginPembayaran.login(LoginPembayaran.java:31)
正如在另一个答案中已经提到的,地图
hasil
可能不包含关键项目
sukses
,因此例外


要调试此问题,可以使用Android Studio的调试器(请参阅)并在第31行设置断点,以检查map
hasil
是否确实包含键
sukses
,从异常日志中可以看到异常源自
LoginPembayaran.login
,第31行

Caused by: java.lang.NullPointerException
      at com.khoiron.apptagihan.RestClient.LoginPembayaran.login(LoginPembayaran.java:31)
正如在另一个答案中已经提到的,地图
hasil
可能不包含关键项目
sukses
,因此例外

要调试此问题,您可以使用Android Studio的调试器(请参阅)并在第31行中设置断点,以检查map
hasil
是否确实包含键
sukses

的可能副本。有关如何解决此问题的更多建议,请参阅的可能副本。