Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 方法调用产生NPE改造_Java_Android_Retrofit_Retrofit2 - Fatal编程技术网

Java 方法调用产生NPE改造

Java 方法调用产生NPE改造,java,android,retrofit,retrofit2,Java,Android,Retrofit,Retrofit2,我试图在应用程序中设置NavHeader上的天气,单击浮动操作按钮 fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { WeatherAPI.Factory.getInstance().getWeather().enqueue(new Callback<Weather>() { @Override

我试图在应用程序中设置NavHeader上的天气,单击浮动操作按钮

fab.setOnClickListener(new View.OnClickListener() {
      @Override public void onClick(View view) {

        WeatherAPI.Factory.getInstance().getWeather().enqueue(new Callback<Weather>() {
          @Override public void onResponse(Call<Weather> call, Response<Weather> response) {

            Query query = response.body().getQuery();
            degree.setText(query.getResults().getChannel().getItem().getCondition().getTemp());
          }

          @Override public void onFailure(Call<Weather> call, Throwable t) {

            Log.e("failure", t.getMessage());
          }
        });
      }
    });
以下是错误:

05-19 09:46:22.399 26168-26168/us.egek.攀岩Kaynaklar E/AndroidRuntime:致命异常:主 工艺流程:us.egek.RockUplingKaynakular,PID:26168 java.lang.RuntimeException:无法启动活动 ComponentInfo{us.egek.RockClimpingKaynaklar/us.egek.RockClimpingKaynaklar.Activities.MainActivity}: java.lang.NullPointerException 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2318) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2396) 在android.app.ActivityThread.access$800(ActivityThread.java:139) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1293) 位于android.os.Handler.dispatchMessage(Handler.java:102) 位于android.os.Looper.loop(Looper.java:149) 位于android.app.ActivityThread.main(ActivityThread.java:5257) 位于java.lang.reflect.Method.Invokenactive(本机方法) 位于java.lang.reflect.Method.invoke(Method.java:515) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:609) 在dalvik.system.NativeStart.main(本机方法) 原因:java.lang.NullPointerException 在 us.egek.rockclimpingkaynaklar.Activities.MainActivity.onCreate(MainActivity.java:93)


WeatherAPI.Factory.getInstance()
方法中,您应该将服务属性分配给改装创建语句

service = retrofit.create(WeatherAPI.class);

我可以看出代码中从未初始化过您的服务对象。因此
WeatherAPI.Factory.getInstance()
将始终提供
null
public class Query {

    @SerializedName("count")
    @Expose
    private int count;
    @SerializedName("created")
    @Expose
    private String created;
    @SerializedName("lang")
    @Expose
    private String lang;
    @SerializedName("results")
    @Expose
    private Results results;

    public int getCount() {
        return count;
    }

    public void setCount(int count) {
        this.count = count;
    }

    public String getCreated() {
        return created;
    }

    public void setCreated(String created) {
        this.created = created;
    }

    public String getLang() {
        return lang;
    }

    public void setLang(String lang) {
        this.lang = lang;
    }

    public Results getResults() {
        return results;
    }

    public void setResults(Results results) {
        this.results = results;
    }

}
service = retrofit.create(WeatherAPI.class);