关闭

往fragment传值参考代码

203人阅读 评论(0) 收藏 举报
分类:

BaseFragment

import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

import com.google.gson.Gson;

import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

public abstract class BaseFragment extends Fragment {
    protected static final String TAG = "BaseFragment";
    protected static final int SUCCESS = 0;
    private View view;
    private ListView listView;
    Handler handler = new Handler() {
        public void handleMessage(android.os.Message msg) {
            if (msg.what == SUCCESS) {
                String json = (String) msg.obj;
                Gson gson = new Gson();
                final WeiChatInfo fromJson = gson.fromJson(json,
                        WeiChatInfo.class);
                listView.setAdapter(new BaseAdapter() {
                    @Override
                    public View getView(int position, View convertView,
                            ViewGroup parent) {
                        View view2 = View.inflate(getActivity(),
                                R.layout.lv_item, null);
                        ImageView lv_image = (ImageView) view2
                                .findViewById(R.id.lv_image);
                        TextView lv_title = (TextView) view2
                                .findViewById(R.id.lv_title);
                        lv_title.setText(fromJson.result.list.get(position).title);

                        ImageUtils imageUtils = new ImageUtils();
                        imageUtils.getImage(
                                fromJson.result.list.get(position).firstImg,
                                lv_image);

                        return view2;
                    }

                    @Override
                    public long getItemId(int position) {
                        return 0;
                    }

                    @Override
                    public Object getItem(int position) {
                        return null;
                    }

                    @Override
                    public int getCount() {
                        // TODO Auto-generated method stub
                        return fromJson.result.list.size();
                    }
                });

            }
        };
    };

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.list_layout, container, false);
        listView = (ListView) view.findViewById(R.id.listView);
        return view;
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        // 请求网络数据
        getData();
    }

    private void getData() {
        new Thread() {
            public void run() {
                int pno = getPno();
                String path = "http://v.juhe.cn/weixin/query?key=0917c812f187b92e025c9b7c2d4e59b5&pno="
                        + pno;
                try {
                    URL url = new URL(path);
                    HttpURLConnection httpURLConnection = (HttpURLConnection) url
                            .openConnection();
                    httpURLConnection.setConnectTimeout(5000);
                    httpURLConnection.setReadTimeout(5000);
                    httpURLConnection.setRequestMethod("GET");
                    int responseCode = httpURLConnection.getResponseCode();
                    if (responseCode == 200) {
                        InputStream inputStream = httpURLConnection
                                .getInputStream();
                        // 读出来---String
                        ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream();
                        byte[] buffer = new byte[1024];
                        int len = 0;
                        while ((len = inputStream.read(buffer)) != -1) {
                            arrayOutputStream.write(buffer, 0, len);
                        }
                        String string = arrayOutputStream.toString();
                        // 解析json
                        Log.i(TAG, "string:" + string);
                        handler.obtainMessage(SUCCESS, string).sendToTarget();
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            };
        }.start();
    }

    public abstract int getPno();
}

fragment1

import android.annotation.SuppressLint;
import android.os.Bundle;
import android.support.v4.app.Fragment;

public class Fragment0 extends BaseFragment {

    private int pno;

    @Override
    public int getPno() {
        // 返回
        return pno;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 获取参数
        Bundle arguments = getArguments();
        pno = (int) arguments.getInt("pno");
    }
    // 先获取Fragment实例,顺便传值
    public static Fragment getInstance(int pno) {
        // 自己创建Fragmnt
        Fragment0 fragment0 = new Fragment0();
        // 存储参数
        Bundle bundle = new Bundle();
        bundle.putInt("pno", pno);
        // 设置进去
        fragment0.setArguments(bundle);
        return fragment0;
    }

}``

调用

viewPager.setAdapter(new FragmentPagerAdapter(
                getSupportFragmentManager()) {

            @Override
            public int getCount() {
                return 5;
            }

            @Override
            public Fragment getItem(int position) {
                Fragment fragment0 = Fragment0.getInstance(position + 1);
                return fragment0;
            }
        });
0
0
查看评论

Fragment的通信问题, 新建Fragment为何不要在构造方法中传递参数

Fragment的通信问题, 新建Fragment为何不要在构造方法中传递参数最近有个新进来的同事做Android开发,因为之前都是做Java的,所以新建对象习惯在构造方法里面去传递参数回调方法什么的. 于是当他在Activity中创建Fragment的时候,也使用了类似new TestFragm...
  • EthanCo
  • EthanCo
  • 2016-03-17 12:01
  • 625

Fragment向activity中传值

Fragment向activity中传值 1.在Fragment中写一个回调接口   2.在activity中实现这个回调接口 3,在Fragment中onAttach 方法中得到activity中实现好的 实例化接口对象 4,用接口的对象  进行传值 ...
  • shanxuyang
  • shanxuyang
  • 2015-07-28 22:56
  • 12143

Activity向Fragment传值

这里只介绍在创建Fragment对象的时候,怎么给Fragment传递值。因为最近比较忙,过一阵会发表具体介绍Fragment的使用文章 在原来看书学习的时候,书中介绍到很多传值得方法,但推荐使用Bundle对象传递让Fragment显示有两种方式,但是<fragment>标签这样的方...
  • qq_16060713
  • qq_16060713
  • 2016-03-18 12:01
  • 4593

安卓:Fragment向Fragment传值的3种方法

第一种: 主布局文件: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/t...
  • my_worldlet
  • my_worldlet
  • 2015-09-15 21:31
  • 9528

从Activity往Fragment传值

直接在Fragment创建静态方法: public static HomeFragment getInstence(int color){ //参数传值 HomeFragment hf = new HomeFragment(); tabLayout.setSelectedT...
  • dongchangqi95
  • dongchangqi95
  • 2017-12-18 21:16
  • 39

fragment间相互传值

在Activity中加载Fragment的时候,有时候可能会使用多个Fragment,这个时候就会产生多个fragment切换,并传值到另外一个fragment。也就是说两个fragment之间的参数传递,下面我介绍两种使用的比较多的方法; 方法一、在Activity中定义一个字段...
  • heminghung
  • heminghung
  • 2016-05-29 14:28
  • 1772

Android fragment 之间传值的方法

在Activity中加载Fragment的时候、有时候要使用多个Fragment切换、并传值到另外一个Fragment、也就是说两个Fragment之间进行参数的传递、查了很多资料、找到两种方法、一种是通过共同的Activity传递、这种方法是在Activity里面添加一个字段、来临时保存要一些值 ...
  • qq_32766501
  • qq_32766501
  • 2016-02-24 09:57
  • 1925

详解Fragment的传值问题

Fragment,碎片,是Android 3.0之后加入的一个非常重要的概念。每个Fragment都有相应的Activity对它进行托管。一个Activity中可以有多个Fragment,这很自然的给大屏幕的适配提供了很便捷的方案。现在大家在开发中都必不可上的用上Fragment。本文总结了Frag...
  • u014486880
  • u014486880
  • 2015-08-01 15:12
  • 2217

Fragment切换与Fragment间传值

关于Fragment的使用本篇不做说明。 一、Fragment切换 关于Fragment切换有两种方式,一种是replace另一种是add。 通常replace是直接替换当前的Fragment,而add是不断进行添加,一般我个人写的时候经常将add方式与show()和hide()两个方法一起使...
  • qq_15505947
  • qq_15505947
  • 2017-03-06 20:42
  • 169

Fragment之间通过EventBus相互传值或调用方法

1。event 总类package com.louisgeek.louisdemo;/** * Created by louisgeek on 2016/4/3. */ public class EventAll { class EventLoadData{ priv...
  • RichieZhu
  • RichieZhu
  • 2016-04-03 19:56
  • 2237
    个人资料
    • 访问:1374次
    • 积分:55
    • 等级:
    • 排名:千里之外
    • 原创:1篇
    • 转载:4篇
    • 译文:0篇
    • 评论:2条
    文章分类
    文章存档
    最新评论