Fragment动态注册传值与静态注册传值小demo

不说废话直接上干货,试用基础学着,大牛绕行。

操作步骤如下:

Ø  1、创建一个Android项目,创建2个Fragment类,左侧Fragment显示一个ListView,使用静态Fragment的方式显示

Ø  2、左侧Fragment显示一个TextView控件,使用动态的方式添加。

Ø  3、点击左侧的listitem后,把点击条目中的文字显示在右侧的TextView控件上

首先是xml布局

activity_main.xml


    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
  android:orientation="horizontal"
  >
  
            android:id="@+id/fragment01"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="3"
        android:name="com.example.demo2.Fragment01"
        />
 
            android:id="@+id/fragment02"
        android:layout_weight="7"
        android:layout_height="match_parent"
        android:layout_width="0dp"
        
        >

 

注意静态注册使用 的标签是

静态注册里面name属性必须要写 格式是 包名+类名

动态注册的标签是


fragment01.xml



    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    
            android:id="@+id/textview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="请点击左侧条目"
        android:textSize="20dp"
        />


fragment02.xml



    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    
            android:id="@+id/textview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="请点击左侧条目"
        android:textSize="20dp"
        />



接下来是java代码


MainActivity.java

package com.example.demo2;

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTransaction;
import android.view.Menu;

public class MainActivity extends FragmentActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
         //调用fragment管理者, 通过管理者创建事物
        FragmentTransaction beginTransaction = getSupportFragmentManager().beginTransaction();
        //将布局动态添加到fragment02中
        beginTransaction.replace(R.id.fragment02, new Fragment02());
        //提交添加
        beginTransaction.commit();
        
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    
}


Fragment01.java


package com.example.demo2;

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

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.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
//静态注册布局
public class Fragment01 extends Fragment {

    private View view;
    private ListView listview;
    private List list;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        //获取view组件
        view = inflater.inflate(R.layout.fragmnet01, container, false);
        //获取view中的listview组件
        listview = (ListView) view.findViewById(R.id.listview);
        
        return view;
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onActivityCreated(savedInstanceState);
        //创建模拟数据
        list = new ArrayList();
        list.add("推荐分类");
        list.add("京东超市");
        list.add("国际名牌");
        list.add("奢侈品");
        list.add("全球购");
        list.add("男装");
        list.add("女装");
        list.add("男鞋");
        list.add("女鞋");
        list.add("内衣配饰");
        list.add("箱包手袋");
        list.add("美装个护");
        //将模拟数据添加到适配器中,这里只是简单是String 类型的数据就用ArrayAdapter适配器添加完成其中android.R.layout.simple_list_item_1的意思是
        //android里面自带的布局,这里面只有textview组件
        ArrayAdapter adapter = new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_1, list);
        listview.setAdapter(adapter);
        //通过点击条目事件触发更新右侧fragment02
        listview.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView arg0, View arg1, int arg2,
                    long arg3) {
                //获取fragment02类
                Fragment02 fragment02 = (Fragment02) getActivity().getSupportFragmentManager().findFragmentById(R.id.fragment02);
                //直接调用fragment02类的方法更新textview
                fragment02.getfragment02(list.get(arg2));
                
            }
        });
        
        
    }

    
    
    
}


Fragment02.java


package com.example.demo2;

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.TextView;
//动态布局
public class Fragment02 extends Fragment {

    
    
    private View view;
    private TextView textview;



    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        //获取view组件
        view = inflater.inflate(R.layout.fragment02, container, false);
        //获取textview组件
        textview = (TextView) view.findViewById(R.id.textview);
        
        
        return view;
    }
    
    
    
    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        
        
        
        
        
    }
//更新textview方法

public void getfragment02(String name){
    //更新textview
    textview.setText(name);
    
}
    
    
    
}



你可能感兴趣的:(自主文章记录,代码整合)