两个Fragment传值之二

功能:在竖屏状态下显示文件名,点击进入另外一个activity 中,显示对应的文件内容,在横屏条件下(需要新建一个layout-land文件,下面写横屏条件下的布局,名称activity_main.xml和layout下的布局文件名称一样,系统会自动根据横竖屏情况寻找对应的布局),左侧文件名,右侧文件内容
承接上一博文:
两个Activity
MainActivity.java:

package com.example.zjday12_fragmen_land;

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);
    }
}

ContentActivity.java:

package com.example.zjday12_fragmen_land;

import com.example.zjday12_fragmen_land.fragment.Content_Fragment;

import android.app.Activity;
import android.os.Bundle;

public class ContentActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_content);
        //修改Activity的标题
        setTitle("内容页面");
        /**
         * 动态加载fragment
         */
        //实例化fragment
        Content_Fragment fragment =new Content_Fragment();
        //获取参数
        fragment.setArguments(getIntent().getExtras());
        //动态显示
        getFragmentManager().beginTransaction()
        .replace(R.id.content_id, fragment)
        .commit();

    }
}

两个Fragment
Content_Fragment.java:

package com.example.zjday12_fragmen_land.fragment;


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

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;

import com.example.zjday12_fragmen_land.R;

public class Content_Fragment 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.textview);

        //接收传来的文件名称
        fileName =getArguments().getString("fileName");

//      Toast.makeText(getActivity(), fileName, 1).show();
        //根据传来的文件获取文件内容
        //获取assets管理器
        AssetManager manager =getResources().getAssets();
        try {
            InputStream inStream=manager.open(fileName);

            StringBuilder sBuilder =new StringBuilder();
            String line=null;
            BufferedReader reader=new BufferedReader(new InputStreamReader(inStream));
            while((line=reader.readLine())!=null){
                //line=reader.readLine()将reader中的数据写入line中
                sBuilder.append(line);
                sBuilder.append("\n");
            }

            tv.setText(sBuilder.toString());
        } catch (IOException e) {
            e.printStackTrace();
        }
        return view;
    }

}

Left_Fragment.java:

package com.example.zjday12_fragmen_land.fragment;

import java.util.ArrayList;
import java.util.List;

import android.app.Fragment;
import android.content.Intent;
import android.content.res.Configuration;
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_fragmen_land.ContentActivity;
import com.example.zjday12_fragmen_land.R;

public class Left_Fragment extends Fragment {
    private ListView listview;
    private ArrayAdapter<String>adapter;
    //对象必须new一下,防止空指针异常
    private List<String>data=new ArrayList<String>();
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View view =inflater.inflate(R.layout.fragment_left, null);
        //获取控件
        listview=(ListView) view.findViewById(R.id.listview);
        //数据源
        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);
        //设置适配器
        listview.setAdapter(adapter);
        //监听事件
        listview.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                //获取文件名称
                String fileName=data.get(position);
//              adapter.getItem(position)

                /**
                 * 将获得的文件名通过bundle传出,
                 * 因为如果是横屏的话只能通过bundle在两个Fragment之间穿值
                 * 所以此处直接用bundle进行传值
                 */
                Bundle args =new Bundle();
                args.putString("fileName", fileName);
                /**
                 * 判断当前屏幕的方向
                 * getResources().getConfiguration()获取配置信息
                 * 如果为横屏,则按照layout-land中的布局进行排列
                 * 若为竖屏,则跳转到另一个Activity中
                 */
                if(getResources().getConfiguration().orientation==Configuration.ORIENTATION_LANDSCAPE){
                    //传入数据
                    Content_Fragment fragment=new Content_Fragment();
                    fragment.setArguments(args);
                    getFragmentManager().beginTransaction()
                    .replace(R.id.content_fragment_id, fragment)
                    .addToBackStack(null)
                    .commit();
                }else{
                    Intent intent =new Intent(getActivity(),ContentActivity.class);
                    intent.putExtras(args);
                    startActivity(intent);
                }
            }
        });
        return view;
    }
}

四个布局文件
activity_main.xml:

<RelativeLayout 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:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/fragment_left"
    android:name="com.example.zjday12_fragmen_land.fragment.Left_Fragment"/>

</RelativeLayout>

activity_content.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" 
    android:id="@+id/content_id"/>


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:layout_width="match_parent"
       android:layout_height="match_parent"
       android:id="@+id/textview"
       android:textColor="#00ff00"
       android:textSize="20sp"/>

</ScrollView>

fragment_left.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:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/listview"
    android:divider="#00ff00"
    android:dividerHeight="2dp"/>
</LinearLayout>

横屏条件下的布局文件:
activity_main.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="horizontal"
    android:padding="5dp" >
    <fragment
        android:layout_weight="1" 
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:id="@+id/left_fragment_id"
        android:name="com.example.zjday12_fragmen_land.fragment.Left_Fragment"/>



    <FrameLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:id="@+id/content_fragment_id"
        android:layout_weight="3"
        />

</LinearLayout>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值