两个Fragment之间传递数据之一
来源:互联网 发布:javascript闭包是什么 编辑:程序博客网 时间:2024/06/04 08:02
在此实例中, 两个Fragment在同一个Activity,需要了解Fragment的两种加载方式(静态和动态):
关于Fragment的一些知识:
一,如何创建Fragment
1,定义一个类,继承Fragment
2,重写父类的生命周期方法:onCreateView()
二,Fragment的显示方式
1,静态显示
布局页面中:
必须要指定id或者tag属性,来标示Fragment的唯一
android:name 指定要显示的Fragment类
2,动态显示
2.1 在Activity的布局中,通过布局容器占位 2.2 在Activity中: //1, 得到Fragment管理器对象 FragmentManager manager = getFragmentManager(); //2,开始Fragment的事务处理 FragmentTransaction transaction = manager.beginTransaction(); //3,实例化Fragment MyFragment fragment = new MyFragment(); //4,动态显示Fragment //containerViewId 布局中给Fragment占位的布局容器ID, fragment 这个位置上显示的Fragment transaction.add(R.id.frgment_id, fragment); //5,提交事务,而且只能提交一次 transaction.commit();
简要说明:左右两个Fragment,左侧显示文件名, 点击文件名,右侧根据左侧传来的文件名查找文件,并将文件内容读出,显示在右侧Fragment中,左侧静态显示,右侧动态显示,文件放在assets目录下
具体代码:
MainActivity,在这里没用,怕忘记,先贴出来:
package com.example.zjday12_home_work;import android.os.Bundle;import android.app.Activity;public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); }}
左侧Fragment:
package com.example.zjday12_home_work.fragment;import java.util.ArrayList;import java.util.List;import android.app.Fragment;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.ArrayAdapter;import android.widget.ListView;import com.example.zjday12_home_work.R;public class Left_Fragment extends Fragment { private ListView lv; private List<String> data = new ArrayList<String>(); private ArrayAdapter<String>adapter; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view =inflater.inflate(R.layout.fragment_left, null); lv=(ListView) view.findViewById(R.id.listView_id); data.add("day02.txt"); data.add("day03.txt"); data.add("day04.txt"); data.add("day05.txt"); data.add("day06.txt"); data.add("day07.txt"); adapter =new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, data); lv.setAdapter(adapter); //为listView设置监听,向ContentFragment中传入文件名 lv.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { //获取点击的Item的对应的文件名 String fileName=data.get(position); //通过bundle传值 Bundle args=new Bundle(); args.putString("fileName",fileName); //实例化一个ContentFragment对象,用于传值 ContentFragment fragment =new ContentFragment(); fragment.setArguments(args); //动态加载右侧的Fragment getFragmentManager() .beginTransaction() .replace(R.id.frameLayout_id, fragment) .addToBackStack(null) .commit(); } }); return view; }}
右侧Fragment(ContentFragment):
package com.example.zjday12_home_work.fragment;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import com.example.zjday12_home_work.R;import android.app.Fragment;import android.content.res.AssetManager;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;public class ContentFragment extends Fragment { private TextView tv; private String contentText; private String fileName; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view =inflater.inflate(R.layout.fragment_content, null); tv=(TextView) view.findViewById(R.id.tv); //接受从left_Fragment 传入的数据(文件名) fileName =getArguments().getString("fileName"); //根据传入的文件名获取assets目录下的对应文件的内容 AssetManager manager =getResources().getAssets(); //打开对应文件 try { InputStream inStream =manager.open(fileName); StringBuffer sBuffer =new StringBuffer(); String line =null; BufferedReader buffReader=new BufferedReader(new InputStreamReader(inStream)); while((line=buffReader.readLine())!=null){ sBuffer.append(line); sBuffer.append("\n"); } contentText= sBuffer.toString(); } catch (IOException e) { e.printStackTrace(); } tv.setText(contentText); return view; }}
activity_main.xml布局文件:
<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:padding="5dp"> <fragment android:id="@+id/fragment_id" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:name="com.example.zjday12_home_work.fragment.Left_Fragment"/> <FrameLayout android:id="@+id/frameLayout_id" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="2" /></LinearLayout>
fragment_layout.xml布局文件:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ListView android:id="@+id/listView_id" android:layout_width="match_parent" android:layout_height="match_parent" android:divider="#00ff00" android:dividerHeight="2dp" /></LinearLayout>
fragment_content.xml:
<?xml version="1.0" encoding="utf-8"?><ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:id="@+id/tv" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#ccc" /></ScrollView>
不要忘记assets下的文件!!!!
0 0
- 两个Fragment之间传递数据之一
- Android 两个fragment之间数据传递
- Fragment之间传递数据
- Fragment 之间传递数据
- fragment之间传递数据
- 两个Fragment之间的跳转,和数据的传递
- 两个Fragment之间的跳转,和数据的传递
- 两个Fragment之间的跳转,和数据的传递
- Fragment之间的数据传递
- ViewPager + Fragment处理两个Fragment的点击跳转以及之间的传递数据
- ViewPager + Fragment处理两个Fragment的点击跳转以及之间的传递数据
- Fragment与Fragment之间的数据传递
- 两个Fragment之间参数的传递
- 两个Fragment之间参数的传递 .
- 两个Fragment之间参数的传递
- 两个Fragment之间参数的传递
- 两个Fragment之间参数的传递
- 两个Fragment之间参数的传递
- 瀑布流 上拉加载更多
- git submodules
- HTML DOM appendChild()方法
- 【lighting】Color and Vision
- iOS-证书配置
- 两个Fragment之间传递数据之一
- 字符串的全排列和组合算法
- android-APP长期运行于后台,重启后如何避免异常
- ActiveMQ平台搭建 python推送接收
- 使用apt-get下载oracle-java-8代码
- kmp习题大全
- 在顶点照明模式下如何取得光源信息
- 绝对原创,Cheapest PBR Shader EVER!!!!
- pinyin4j支持简拼和多音