求助:Android单击读取按键后如何循环读取并解析JSON数据?

ddlgg 2017-12-15 02:05:54
各位大神:

大家好,请教下Android单击读取按键后如何循环读取并解析JSON数据?
1)我参考https://www.cnblogs.com/smyhvae/p/4063452.html这边文章里的方法,能读取并解析JSON数据,但要一次一次单击,如何实现单击一次按键后,按一定周期循环读取并解析JSON数据?
2)试下通过如 下方式,实现单击一次按键后,循环读取并解析JSON数据,但报错。

private Handler handler = new Handler();
public Runnable task = new Runnable() {
public void run() {

String path = "http://XXXXXX";//JSON数据网址
String jsonString = HttpUtils.getJsonContent(path);//从网络获取数据
Person person = GsonTools.getPerson(jsonString, Person.class);//解析json数据
Log.i(TAG, person.toString());//---------------------------报错,Log显示红色。
System.out.println(person.toString());---------------------------报错
handler.postDelayed(this, 1000);
}
};

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.user);
btnOpen = (Button) findViewById(R.id.open);

btnOpen.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
handler.postDelayed(task,1000);//延迟调用
}
});

调试错误:
12-15 14:03:05.264 5588-5588/com.example.foolishfan.user_v10 W/System: ClassLoader referenced unknown path: /system/framework/tcmclient.jar
12-15 14:03:05.300 5588-5588/com.example.foolishfan.user_v10 E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.foolishfan.user_v10, PID: 5588
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.example.foolishfan.user_v10.Person.toString()' on a null object reference
at com.example.foolishfan.user_v10.User$1.run(User.java:39)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5438)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:629)
12-15 14:03:05.372 5588-5588/com.example.foolishfan.user_v10 I/Process: Sending signal. PID: 5588 SIG: 9



...全文
159 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ddlgg 2017-12-15
  • 打赏
  • 举报
回复
这段指令跟文章里是一样的。不同是原文是放在一个Thread里,我放在task子函数里,就没有线程了。 String path = "http://XXXXXX";//JSON数据网址 String jsonString = HttpUtils.getJsonContent(path);//从网络获取数据 Person person = GsonTools.getPerson(jsonString, Person.class);//解析json数据
sudazll111 2017-12-15
  • 打赏
  • 举报
回复
Attempt to invoke virtual method 'java.lang.String com.example.foolishfan.user_v10.Person.toString()' on a null object reference 应该是你解析出来的person为空引起的
ddlgg 2017-12-15
  • 打赏
  • 举报
回复
https://www.cnblogs.com/smyhvae/p/4063452.html这边文章里 提到了 “因为是Android4.0+,所以不能在主线程中访问网络,需要另起一个线程,这里使用Thread类”,是否跟这个有关呢?跟我根据文章的方法,把thread类去掉了,单击一次按钮也能读取网页并解析JSON数据。
ddlgg 2017-12-15
  • 打赏
  • 举报
回复
先来顶一个!

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧