NoHttp报错之Please invoke NoHttp.initialize(Application) on Application#onCreate()
2016-07-29 14:24
465 查看
先来看看报错内容吧
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 如果觉得对你有用,就点赞吧
相关文章推荐
- 【Python之路Day12】网络篇之Python操作MySQL
- tcp 三次握手和四次断连深入分析:连接状态和socket API的关系
- tomcat8 https ssl证书配置
- httpurlconnection
- 如何解决IIS错误_HTTP 错误 500.21 - Internal Server Error
- httputils请求数据
- 1、设备网络SDK主要功能
- 布卡互动:领先行业的直播技术,给用户最佳直播体验
- 路由器与交换机区别
- http响应状态码大全
- 用HttpUrlConnection解析读取数据
- HTTPS和HTTP的概念和区别
- 验证 HTTPS 请求的证书(五)
- AFNetworkReachabilityManager 监控网络状态(四)
- https被修改成http排查过程
- 【经验总结】tcp_tw_recycle参数引发的故障
- 基本的basehttpserver 详细介绍
- 简单的利用UrlConnection,后台模拟http请求
- httpclient3.x请求https的实例:
- 网络爬虫 WebCollector 2.x 入门教程