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

来源:互联网 发布:网络几分钟断一次 编辑:程序博客网 时间:2024/06/05 05:51

先来看看报错内容吧

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 0