如何在Fragment中进行网络通信 青旅半醒 2022-05-27 06:18 181阅读 0赞 1.我们知道安卓中许多的接口调用都需要用到context,而fragment本身不是一个context 2.最简单的方法就是通过getActivity()的方法来获得fragment所在的类 3.然后同过该context进行网络通信 4.案例如下: package com.example.dengjiale.xuanshang.fragment; import android.app.Activity; import android.app.ProgressDialog; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ListView; import android.widget.Toast; import com.alibaba.fastjson.JSONArray; import com.example.dengjiale.xuanshang.R; import com.example.dengjiale.xuanshang.activity.MainActivity; import com.example.dengjiale.xuanshang.adapter.OrderAdapter; import com.example.dengjiale.xuanshang.entity.Order; import com.example.dengjiale.xuanshang.utils.NetUtil; import java.io.IOException; import java.util.ArrayList; import okhttp3.Call; import okhttp3.Callback; import okhttp3.Response; /** * Created by dengjiale on 2018/4/12. */ public class HomeFragment extends Fragment { //设置所在activity的引用 Activity activity; ArrayList<Order>orderList; OrderAdapter orderAdapter; ListView listView; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { /* 引用创建好的xml布局 */ View view = inflater.inflate(R.layout.fragment_home,container,false); listView=(ListView)view.findViewById(R.id.homeFragment_listview); orderList=new ArrayList<>(); activity=getActivity(); orderAdapter=new OrderAdapter(orderList,activity); getOrderList(); return view; } //列表初始化 public void getOrderList() { final ProgressDialog progressDialog = ProgressDialog.show(activity, "加载中", "请稍后..."); NetUtil.getOrderList(new Callback() { @Override public void onFailure(Call call, IOException e) { activity.runOnUiThread(new Runnable() { @Override public void run() { progressDialog.dismiss(); Toast.makeText(activity, "网络错误", Toast.LENGTH_SHORT).show(); } }); } @Override public void onResponse(Call call, Response response) throws IOException { final String result = response.body().string(); activity.runOnUiThread(new Runnable() { @Override public void run() { progressDialog.dismiss(); orderList = (ArrayList<Order>) JSONArray.parseArray(result, Order.class); if (orderList != null) { OrderAdapter adapter = new OrderAdapter(orderList, activity); listView.setAdapter(adapter); } else { Toast.makeText(activity, "列表空空如也", Toast.LENGTH_SHORT).show(); } } }); } }); } }
相关 在分布式系统中,Java如何处理网络通信异常? 在分布式系统中,Java处理网络通信异常通常涉及以下几个方面: 1. **异常捕获**: - 使用`try-catch`块来捕获可能发生的异常,例如`IOException` ゝ一纸荒年。/ 2024年11月11日 11:33/ 0 赞/ 3 阅读
相关 如何在Java中进行网络编程? 在网络编程中,Java提供了一套完整的API来实现客户端和服务器端的通信。以下是一些基本步骤: 1. **引入必要的库**: Java的`java.net`包是进行网络 末蓝、/ 2024年10月22日 20:57/ 0 赞/ 31 阅读
相关 在Java中如何处理网络通信中的超时问题 在Java中,处理网络通信的超时问题通常需要使用Java的Socket或者URLConnection等类。以下是一个基本的例子: ```java import java.io 川长思鸟来/ 2024年10月17日 04:51/ 0 赞/ 28 阅读
相关 在Java中如何进行网络通信? 在Java中,网络通信主要通过java.net包中的类来实现。以下是一些常见的网络通信方式: 1. **Socket通信**:这是最基础的网络通信方式。客户端创建一个Sock ╰半橙微兮°/ 2024年10月14日 02:24/ 0 赞/ 54 阅读
相关 如何在Java中实现网络通信的常见问题 在网络通信中,Java提供了多种方式来解决常见的问题。以下是几个主要问题及对应的解决方案: 1. **建立连接**: - 使用Socket API:`ServerSoc 喜欢ヅ旅行/ 2024年09月10日 22:03/ 0 赞/ 58 阅读
相关 如何在 Linux 中进行网络地址转换 (NAT)? 网络地址转换(Network Address Translation,简称NAT)是一种在网络中使用的技术,它允许将私有网络中的IP地址映射到公共网络上,从而实现多个设备共享单 Bertha 。/ 2024年03月16日 10:35/ 0 赞/ 20 阅读
相关 如何在Fragment中进行网络通信 1.我们知道安卓中许多的接口调用都需要用到context,而fragment本身不是一个context 2.最简单的方法就是通过getActivity()的方法来获得frag 青旅半醒/ 2022年05月27日 06:18/ 0 赞/ 182 阅读
相关 如何在 Fragment 中使用 runOnUiThread() 方法 使用 getActivity() 替换 MainActivity.this。并且给Toast.makeText()方法使用getApplicationContext() 客官°小女子只卖身不卖艺/ 2022年03月25日 05:23/ 0 赞/ 383 阅读
相关 fragment中设置点击事件(onclick)使用intent进行通信 今天在学习安卓的过程中,需要实现一个功能通信,就是需要在一个fragment中设置一个按钮,点击之后会跳转到一个新的页面,我首先想到是给按钮设置一个onclick属性, 爱被打了一巴掌/ 2021年09月11日 05:50/ 0 赞/ 384 阅读
还没有评论,来说两句吧...