Android OkHttp中调用Handler.post更新UI,在Fragment中无效! 40C

我用OkHttp enqueue异步请求数据,然后用所得到的数据更新UI,在Activity中没什么问题
但在MainAcitivity中的ViewPage的Fragment中调用时出现了Hnadler.post(。。。)中的
代码没有执行的情况。很困惑,求高见!!!

0

7个回答

你这样做有很大的安全隐患啊。异步操作,关键的地方加安全锁,
你Fragment完成控件加载后,先待机,等数据出来了,在刷新UI。

1

查一查是否是因为Fragment生命周期导致的问题

0

fragment还没有初始化

0

查一查是否是因为Fragment生命周期导致的问题

fragment还没有初始化

0

我知道原因了,是我逻辑有问题,我是先从Handler.post中得到数据然后把数据赋给类中的List

然后更新UI的时候用List更新数据。这时候就会出现List为空的情况,因为List的赋值是在消

息队列中的要等Loop的死循环执行到这个消息的时候才会赋值,所以就出现了更新UI时List

为空的情况。并不是代码没有执行,而是Fragment更新UI操作的时候,那个消息还执行。。。

0

干活前,先缕逻辑,出错少,省时省力

0

UI顺序,先初始化view,调用接口获取数据。然后在回调中刷新ui

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Android开发笔记:使用 Handler 的 post() 方法更新 UI
使用 Handler 的 post() 方法更新 UI,是通过 post 出一个 Runnable 的方式,代码如下: //使用post方法直接更新ui线程 new Thread(new Runnable() { @Override public void run() { mHandler.post(new Runnable() { @O...
Handler.post 子线程更新UI原理
public class MainActivity extends AppCompatActivity { TextView textview; Handler handler; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(saved...
UI线程中调用Handler.post与直接执行方法的区别
有时可以看到在activity/fragment的普通方法中使用Handler.post去更新界面的写法。 常见的Handler.post主要是子线程通知ui线程更新界面,类似handler.sendMessage。 ui线程去Handler.post,既然本身就在ui线程,为何还要Handler.post?我的第一反应就是优化执行顺序。 Looper从MessageQueue取消
Handler post()等在子线程中更新主线程的UI的方法使用小汇
一直没怎么使用过 handler.post()看到很多地方别人都用到,所以漏出两段代码来练练手 /**  * 总结View.post(),handler.post()方法:有在子线程中更新主线程的UI需求就可以调用handler.post方法来更新  * @author Administrator  *  */ public class MainAc
Android开发之通过Handler的post方法更新UI
在Android中可以通过handler方法完成数据的线程间的传递,但一定要将handler得到的数据通过loop传递到主线程再更新UI吗?其实也可以直接使用handler设计的post方法进行实现,handler的post方法是在主线程运行的,可以直接进行UI的更新操作。
OkHttp3 接口回调 UI线程
Android studio 依赖 compile 'com.squareup.okhttp3:okhttp:3.5.0' compile 'com.squareup.okio:okio:1.11.0'添加网络权限 <uses-permission android:name="android.permission.INTERNET"/> Ansy方法
在Fragment的延时操作中如何更新UI
getActivity().runOnUiThread(new Runnable() { @Override public void run() { //更新UI的操作 }
Android异步更新UI的几种方法
前言:我们知道在android开发中不能在非ui线程的其他线程中更新ui,但是,有的时候我们需要在代码中执行一些诸如访问网络、查询数据库等耗时操作,为了不阻塞ui线程,我们时常会开启一个新的线程(工作线程)来执行这些耗时操作,然后我们可能需要将查询到的数据渲染到ui组件上,那么这个时候我们就需要考虑异步更新ui的问题了。android中有下列几种异步更新ui的解决办法: Activity.runOn
在应用层调用OKhttp进行数据请求,更新View
当封装好了OKhttpSDK网络请求组件的时候,就需要在应用层进行调用来更新View,先在应用层写一个调用接口,随后直接调用实现功能逻辑即可。 /** * @function 应用层的封装,存放所有的请求接口 * @author chao */ public class RequestCenter { //没有任何的业务逻辑,只是为了方便调用 public sta
Fragment与Activity--数据传递、更新UI
1、在Fragment中更新其所在Activity的UI
android 主线程更新UI 全局Handler
最近发现项目中云视互动(语音视频通讯)时长初始化不成功然后查找api才发现 必须在UI主线程中初始化: import android.os.Handler; import android.os.Looper; /** * Created by Administrator on 2018/1/8. */ public class MainHandler extends Handler
android 使用asynctask结合fragment更新UI(另附线程池管理示例)
使用asynctask结合fragment更新UI。在android上有不少设计都是使用fragment,因为使用fragment的生命周期可以和activity一起管理,再受到横竖屏旋转也可以保持稳定。使用asynctask,大家都很熟悉,这个有一个更新进度方法啦。就是巧妙使用这个方法。然后还能耗时工作放在这里。我写的这个可以作为定时器使用。更新的时间可以自已设置。demo下载:http://d
Android 基于OkHttp的UI层回调封装
用多了OkHttp你会发现,它的返回结果都是在子线程中的,我们对返回结果进行解析后,必须通过handler去更新UI,这么一来,便会多出很多重复的机械代码。我们需要进行一层封装,在onResponse回调方法中对返回结果进行解析,然后将解析结果发出去到UI线程进行更新UI。因此,我们需要一个解析的方法,
Android FragmentPagerAdapter数据刷新notifyDataSetChanged没效果研究或不执行OnCreatView方法导致界面不刷新
今天遇到一个问题是Fragment+ViewPager搭配使用的时候,页面刷新不执行OnCreateView方法到时,数据是有刷新了,但是UI界面没有刷新,还是原来的数据显示。 下面先说说我项目中的需求吧,这样我们可以针对问题去解决。 需求:在一个页面中使用ViewPager+Fragment搭配使用,在ViewPager中实现不同页面的滑动。并且ViewPager中的页面数量是根据网络请求回来
从源码分析OkHttp3异步请求网络更新UI报错问题
前言 前一段时间,在一个使用OkHttp进行异步请求网络,然后拿到返回结果进行UI界面的更新的时候,时不时的会报错闪退! 出错代码 在使用OkHttp进行异步请求网络的时候,然后更新UI的时候,是这样写的: OkHttpClient okHttpClient = new OkHttpClient(); Request request = new Request.Builder() ...
在fragment中使用ButterKnife, 加Okhttp等异步网络库时的空指针异常
在 fragment中使用ButterKnife, 官方建议在onDestroyView中使用Unbinder的unbind方法解除绑定。  代码如下: public class BaseFragment extends Fragment{ protected Unbinder mUnbinder; @Override public void onCreateVi
子线程如何异步更新Fragment的UI界面
请问:我在登录界面中登录成功后,异步执行了线程类,该类作用是:从网络上获取了相关信息,读取后 通过Handler通知Fragment_Contacts界面! public class LoadFriendDb extends Thread { : : : android.os.Message msg = Fragment_Contacts.HandlerListen.obtainMe
Android OkHttp请求数据时调用Handler.post更新UI,在Activity中没问题,但在Fragment中无效!!!
我用OkHttp enqueue异步请求数据,然后用所得到的数据更新UI,在Activity中没什么问题rn但在MainAcitivity中的ViewPage的Fragment中调用时出现了Hnadler.post(。。。)中的rn代码没有执行的情况。很困惑,求高见!!!
Activity和Fragment的几种交互方式(Activity可以改变Fragment的UI,Fragment也可以改变ActivityUI)
Activity和Fragment的四种交互方式(Activity可以改变Fragment的UI,Fragment也可以改变ActivityUI)
okhttp3在Fragment中的使用
...
Fragment的切换刷新UI布局以及Fragment的生命周期解释
Fragment的切换刷新UI布局以及Fragment的生命周期解释
更新Ui的简易demo
Android更新Ui的几种方法和见解,常用的更新ui有 - handler.sendMessage(); - handler.post(); - 在activity中可以 runOnUiThread(); - 在子view中可以 view.post()
Android--------在Fragment中通过MVP模式用Okhttp进行数据请求
1.定义一个里面有两个方法的接口(NetDataCallbact); public interface NetDataCallback { void err(int code,String st); void callback(String str); } 2.OkHttp网络请求的工具类(HttpUtils): public class HttpUtil
Android 使用handler回到主线程更新UI 但handler没有回到主线程 依旧在线程中
使用Thread.currentThread().getId()测出id;执行handleMessage方法时并没有回到主线程中执行,因而导致无法再线程中更新UI的错误,有大神能解决吗?
Activity传数据到fragment,并刷新fragment,报空指针
解决办法: Fragment fragment = getSupportFragmentManager().findFragmentByTag(BOOK_SEARCH_LIST); if(fragment != null && !fragment.isVisible()){ getSupportFragmentManager().beginTransact
android 在子线程中操作UI 导致Fragment显示空白问题
android 在子线程中操作UI 导致Fragment显示空白问题
Fragment 页面切换与UI更新
由于使用不通的事务方法,场景也是不通的,这里我们重点讨论show/hide与attach/dettach两类问题。当然,我们绕不开的是add/remove和replace。 一、replace事务 replace相对简单,对应的是Fragment最简单的生命周期,因此页面的切换在onResume中即可。 二、add事务 实际上add和remove虽然是【添加】和【移除】,但是实际上这俩...
使用fragment动态的更改activity界面ui
在activity中动态的设置fragment的ui使得activity随着内容的改变而改变ui
OkHttp3几个简单的例子和在子线程更新UI线程的方法
okHttp用于android的http请求。据说很厉害,我们来一起尝尝鲜。但是使用okHttp也会有一些小坑,后面会讲到如何掉进坑里并爬出来。首先需要了解一点,这里说的UI线程和主线程是一回事儿。就是唯一可以更新UI的线程。这个只是点会在给okHttp填坑的时候用到。而且,这个内容本身在日常的开发中也经常用到,值得好好学一学。okHttp发起同步请求第一个列子是一个同步请求的例子。private
在activity中更新fragment中的界面
MainActivty 添加fragment for (int i = 0; i < 6; i++) { mList.add(MyFragment.newInstence(i)); } FragmentManager supportFragmentManager = getSupportFragmentManager(); ad
Android TabLayout+ViewPager+Fragment实现tab栏的时候,无法实时更新ViewPager内的Fragment问题终极解决方法
TabLayout+ViewPager+Fragment模式在应用中必不可少,有时候我们可能会遇到tab栏会动态改变的问题,如新增,或删减,这时候就需要把viewpager内相应的fragment新增或删减; 如想做以下等操作? 1、更新单个item mDataList.remove(0); mPagerAdapter.notifyDataSetChanged(); 1、删掉viewpag...
Android中EventBus事件总线发送网络请求结果更新UI
Android中通常耗时操作我们都需要另起线程,比如请求服务器获取数据,而请求数据成功后却不能在子线程中更新UI,Android提供了AsyncTask,Handler等机制更新UI,又或者RXJava(开源框架)、接口回调等都可以实现子线程和UI线程通信。其实通过EventBus订阅与发布方式更新UI也很方便。一,首先我们导入依赖 compile 'org.greenrobot:eventbus...
Android中更新UI的两种方法
在Android开发过程中,常需要更新界面的UI。而更新UI是要主线程来更新的,即UI线程更新。如果在主线线程之外的线程中直接更新页面 显示常会报错。抛出异常:android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch i...
android asynctask的fragment更新UI(附线程管理)
android asynctask的fragment更新UI(附线程管理) 博客地址:http://blog.csdn.net/qq_16064871
Fragment 刷新界面
现在很多人都使用Fragment,今天我就来聊下Fragment的刷新功能。 了解Fragment的话这位兄台讲很详细:http://www.cnblogs.com/andriod-html5/archive/2012/06/01/2539403.html 首先很常用的就是列表刷新问题: 1.用回调刷新 onActivityResult()   可以参考-http://blog.csdn.n
post请求网络数据,返回给主线程更新UI实例
本文主要是自己的笔记,封装子线程post方式请求数据,并将数据传给UI线程更新ui,后续还会有主线程Gson解析json数据或XML数据解析
Activity和Fragment相互通信或者改变UI
Activity和Fragment相互通信,或者改变UI
Activity里UI更新的一种可行方法
Activity里UI更新、发送消息大致思路 主要需求为:点击发送按钮,更新TextView显示内容 主要实现思路:activity的UI需要在线程中更新,直接在main函数中Textview.setText(“”),不会有效果。 xml布局文件,主要就是3个控件,Textview,Button,Edittext。没有其他的,Textview中,android:scrollbars=”ve...
okhttp网络获取数据 接口回调 返回到UI中
import android.os.Handler; import android.util.Log; import com.google.gson.Gson; import java.io.IOException; import java.lang.reflect.Type; import java.util.concurrent.TimeUnit; import javax.xml.trans...
33、Android 中子fragment控制父对象改变布局
一、父Activity嵌套子 fragment,在Fragment中修改父Activity中的控件   //在Fragment中使用Activity中控件的方式         AppCompatActivity activity = (AppCompatActivity) getActivity();         Toolbar mToolBar = (Toolbar) activity....
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 机器学习中的数学基础 课程设计中数据库设计