NoHttp报错之Please invoke NoHttp.initialize(Application) on Application#onCreate()

先来看看报错内容吧

07-29 14:03:18.860 2557-2557/wlj.com.nohttp E/AndroidRuntime: FATAL EXCEPTION: main
                                                              Process: wlj.com.nohttp, PID: 2557
                                                              java.lang.ExceptionInInitializerError: Please invoke NoHttp.initialize(Application) on Application#onCreate()
                                                                  at com.yolanda.nohttp.NoHttp.getContext(NoHttp.java:548)
                                                                  at com.yolanda.nohttp.cache.CacheDisk.<init>(CacheDisk.java:47)
                                                                  at com.yolanda.nohttp.cache.CacheDiskManager.<init>(CacheDiskManager.java:39)
                                                                  at com.yolanda.nohttp.cache.CacheDiskManager.getInstance(CacheDiskManager.java:44)
                                                                  at com.yolanda.nohttp.cache.DiskCacheStore.<init>(DiskCacheStore.java:47)
                                                                  at com.yolanda.nohttp.cache.DiskCacheStore.<clinit>(DiskCacheStore.java:34)
                                                                  at com.yolanda.nohttp.NoHttp.newRequestQueue(NoHttp.java:179)
                                                                  at com.yolanda.nohttp.NoHttp.newRequestQueue(NoHttp.java:165)
                                                                  at wlj.com.nohttp.App.initOnHttp(App.java:25)
                                                                  at wlj.com.nohttp.MainActivity.onCreate(MainActivity.java:34)
                                                                  at android.app.Activity.performCreate(Activity.java:6374)
                                                                  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
                                                                  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2743)
                                                                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2855)
                                                                  at android.app.ActivityThread.access$900(ActivityThread.java:181)
                                                                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1474)
                                                                  at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                  at android.os.Looper.loop(Looper.java:145)
                                                                  at android.app.ActivityThread.main(ActivityThread.java:6117)
                                                                  at java.lang.reflect.Method.invoke(Native Method)
                                                                  at java.lang.reflect.Method.invoke(Method.java:372)
                                                                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
                                                                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)

我从网上把jar包下载下来,本来只是写了一个很简单的网络请求,结果就爆出来这样的错误,提示说是:Please invoke NoHttp.initialize(Application) on Application#onCreate(),那么这句话意思是说让我们在application要进行初始化,没办法我们就要在application中进行初始化了,看作者给的demo中有这样一行代码

NoHttp.init(this);

那么这行代码就是在application中,不过现在这个放法过时了,换成了是

 NoHttp.initialize(this);

好了,看看我写的代码,很简单的一个网络请求

application中的代码:

package wlj.com.nohttp;

import android.app.Application;

import com.yolanda.nohttp.NoHttp;
import com.yolanda.nohttp.rest.RequestQueue;

/**
 * @author wlj
 * @date 2016/7/29
 * @packagename wlj.com.nohttp
 */
public class App extends Application {

    private static RequestQueue requestQueue;

    @Override
    public void onCreate() {
        super.onCreate();
        NoHttp.initialize(this);
    }
    //静态的,直接点调用
    public  static RequestQueue initOnHttp() {
        requestQueue = NoHttp.newRequestQueue();
        return requestQueue;
    }
}

mainActivity中的代码:

package wlj.com.nohttp;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import com.yolanda.nohttp.NoHttp;
import com.yolanda.nohttp.RequestMethod;
import com.yolanda.nohttp.rest.OnResponseListener;
import com.yolanda.nohttp.rest.Request;
import com.yolanda.nohttp.rest.RequestQueue;
import com.yolanda.nohttp.rest.Response;


public class MainActivity extends Activity implements View.OnClickListener {
    //用来分是哪次请求
    private static final int NOHTTP_WHAT_TEST = 0x001;

    private Button btn1;
    private TextView tv1;
    //一个天气预报的开发接口
    private String url = "http://mobile.weather.com.cn/data/news/khdjson.htm?_=1381891660018";
    private Request<String> stringRequest;
    private RequestQueue requestQueue;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn1 = (Button) findViewById(R.id.btn1);
        tv1 = (TextView) findViewById(R.id.tv);
        btn1.setOnClickListener(this);
        requestQueue = App.initOnHttp();
    }

    @Override
    public void onClick(View v) {
        stringRequest = NoHttp.createStringRequest(url, RequestMethod.GET);
        switch (v.getId()) {
        //当点击按钮是触发的事件
            case R.id.btn1:
                requestQueue.add(NOHTTP_WHAT_TEST, stringRequest, new OnResponseListener<String>() {
                    @Override
                    public void onStart(int i) {

                    }

                    @Override
                    public void onSucceed(int i, Response<String> response) {
                        String s = response.get();
                        tv1.setText(s);
                    }

                    @Override
                    public void onFailed(int i, String s, Object o, Exception e, int i1, long l) {

                    }

                    @Override
                    public void onFinish(int i) {

                    }
                });
                break;
        }
    }
}

布局文件也是很简单:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    tools:context="wlj.com.nohttp.MainActivity">

    <Button
        android:id="@+id/btn1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="请求网络1" />

    <TextView
        android:id="@+id/tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!" />
</LinearLayout>

最后来看运行效果吧

效果图

ps 如果觉得对你有用,就点赞吧

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值