设为首页 加入收藏

TOP

fragment间的数据传递(一)
2017-10-16 18:18:40 】 浏览:4351
Tags:fragment 数据 传递

今天我将要讲的是fragment间的数据是如何进行传递的。这里我将举个简单的例子。

首先要有个MainActivity,它托管了MainFragment,而MainFragment又托管了DatePickerFragment。其间用到了简单的模型Crime,它只有Date类型的mDate一个属性。例子中的关注点是日期怎么在MainFragment和DatePickerFragment间传递的。

1.调整布局

strings.xml添加字符串资源

<resources>
    <string name="app_name">mytest</string>
    <string name="date_picker_title">Date of crime:</string> <!--添加这一行-->
</resources>

activity_main.xml添加FrameLayout布局

<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/fragment_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.mytest.MainActivity">
</FrameLayout>

fragment_main.xml中添加button组件

<Button
        android:id="@+id/crime_data"
        android:text="初始时间"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

dialog_date.xml添加DatePicker组件

<DatePicker
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/dialog_date_picker"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:calendarViewShown="false">

</DatePicker>

2.Crime.java

public class Crime {
    private Date mDate;
    public Crime() {
        mDate=new Date();
    }
    public Date getDate() {
        return mDate;
    }
    public void setDate(Date date) {
        mDate = date;
    }
}

3. MainFragment.java

继承Fragment,在onCreateView方法中创建并配置fragment视图,其间设置按钮的监听事件,点击后,调用DatePickerFragment的静态函数newInstance,将数据保存在argument bundle中,并同时设置DatePickerFragment的目标fragment是MainFragment。最后设置对于DatePicker对话框的响应。

package com.example.mytest;

import android.app.Activity;
import android.content.Intent;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;

import java.util.Date;

public class MainFragment extends Fragment {
    private Crime mCrime;
    private Button mDateButton;

    private  static  final String DIALOG_DATE="DialogDate";
    private  static  final int REQUEST_DATE=0;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mCrime=new Crime();
    }
    //创建和配置fragment视图
    @Override
    public View onCreateView(LayoutInflater inflater,ViewGroup container,
                             Bundle savedInstanceState) {
        //加载布局
        View v=inflater.inflate(R.layout.fragment_main,container,false);
        //生成并使用组件
        mDateButton=(Button)v.findViewById(R.id.crime_data);
        mDateButton.setText(mCrime.getDate().toString());
        //mDateButton.setEnabled(false);
        mDateButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                FragmentManager manager=getFragmentManager();

                //newInstance替换构造方法
                //DatePickerFragment dialog=new DatePickerFragment();
                DatePickerFragment dialog=DatePickerFragment.newInstance(mCrime.getDate());

                //设置目标fragment
                dia
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇android studio 使用adb命令传递.. 下一篇DatePickerDialog日期对话框以及..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目