关于Fragment的小笔记

1、首先、判断我关联的Activity中有几个Fragment碎片,也是我关联的Activity被划分几个碎片,有几个碎片就有几个碎片容器。
2、然后、再判断碎片是静态装入还是动态装入呢?? 若随着宿主Activity一同初始化显示的碎片,则为静态装入,若是经过触发哪个事件才会产生另一个碎片
则为动态装入。
3、得知装入方式后,若是静态装入的,则只需要指定关联的Activity中布局文件碎片容器为<fragment />,并且记住要指定name属性,指定指向的碎片对象
若是动态装入的,则需要到关联的Activity中去开启一个事务,动态将碎片对象装入到我们指定id布局文件的容器中即可
代码如下:
//1、创建FragmentManager对象
fManager=getFragmentManager();
//2、开启事务,Fragment是基于事务的
ft=fManager.beginTransaction();
//3、操作片段,添加,替换,删除
Fragment fragment=new FirstFragment();
ft.add(R.id.left_fragment,fragment, "first");//tag起到了标识的作用,标识不同的Fragment,第一个参数是表示把该片段放在Activity的


哪个位置,也就是在Fragment所关联的Activity布局文件的中某个指定位置的容器的id,
//例如我是把该碎片放在我的Activity_main中的左边的单帧布局容器中内容
//4、提交事务
ft.addToBackStack("two");//把添加碎片的事务也保存到回退栈中,实现按钮推到原先未修改的页面
ft.commit();
4、确定了怎么装入后,然后就是简单创建我们的碎片对象然后绑定布局即可
                              1、创建一个class去继承Fragment及子类

                              2、然后去重写OnCreateView方法,通过Inflate方法,将我们绑定的布局文件转化成一个View对象,并显示来即可。



利用一个"先整体,后局部"思想。

1、首先、判断我关联的Activity中有几个Fragment碎片,也是我关联的Activity被划分几个碎片,有几个碎片就有几个碎片容器。

2、然后、再判断碎片是静态装入还是动态装入呢?? 若随着宿主Activity一同初始化显示的碎片,则为静态装入,若是经过触发哪个事件才会产生另一个碎片

则为动态装入。

3、得知装入方式后,若是静态装入的,则只需要指定关联的Activity中布局文件碎片容器为<fragment />,并且记住要指定name属性,指定指向的碎片对象

若是动态装入的,则需要到关联的Activity中去开启一个事务,动态将碎片对象装入到我们指定id布局文件的容器中即可

代码如下:

//1、创建FragmentManager对象

fManager=getFragmentManager();

//2、开启事务,Fragment是基于事务的

ft=fManager.beginTransaction();

//3、操作片段,添加,替换,删除

Fragment fragment=new FirstFragment();

ft.add(R.id.left_fragment,fragment, "first");//tag起到了标识的作用,标识不同的Fragment,第一个参数是表示把该片段放在Activity

 

 

哪个位置,也就是在Fragment所关联的Activity布局文件的中某个指定位置的容器的id,

//例如我是把该碎片放在我的Activity_main中的左边的单帧布局容器中内容

//4、提交事务

ft.addToBackStack("two");//把添加碎片的事务也保存到回退栈中,实现按钮推到原先未修改的页面

ft.commit();

4、确定了怎么装入后,然后就是简单创建我们的碎片对象然后绑定布局即可

                              1、创建一个class去继承Fragment及子类

                              2、然后去重写OnCreateView方法,通过Inflate方法,将我们绑定的布局文件转化成一个View对象,并显示来即可。

 

 

package com.zhongqihong.testfragmentapp;

 

 

 

import android.os.Bundle;

 

import android.app.Activity;

 

import android.view.Menu;

 

 

 

public class MainActivity extends Activity {

 

 

 

@Override

 

protected void onCreate(Bundle savedInstanceState) {

 

super.onCreate(savedInstanceState);

 

setContentView(R.layout.activity_main);

 

}

 

}

 

 

package com.zhongqihong.testfragmentapp;

 

 

 

import android.annotation.SuppressLint;

 

import android.app.Fragment;

 

import android.app.FragmentManager;

 

import android.app.FragmentTransaction;

 

import android.os.Bundle;

 

import android.view.LayoutInflater;

 

import android.view.View;

 

import android.view.View.OnClickListener;

 

import android.view.ViewGroup;

 

import android.widget.Button;

 

 

 

@SuppressLint("NewApi")

 

public class FirstFragment extends Fragment{

 

private FragmentManager fManager;

 

@Override

 

public View onCreateView(LayoutInflater inflater, ViewGroup container,

 

Bundle savedInstanceState) {

 

View v=inflater.inflate(R.layout.left_fragment, container,false);

 

Button btn=(Button) v.findViewById(R.id.display);

 

Button btn2=(Button) v.findViewById(R.id.nodisplay);

 

fManager=getFragmentManager();

 

btn2.setOnClickListener(new  OnClickListener() {

 

@Override

 

public void onClick(View v) {

 

// TODO Auto-generated method stub

 

FragmentTransaction ft=fManager.beginTransaction();

 

ft.remove(fManager.findFragmentByTag("center"));

 

ft.commit();

 

}

 

});

 

btn.setOnClickListener(new OnClickListener() {

 

 

 

@SuppressLint("NewApi")

 

@Override

 

public void onClick(View v) {

 

// TODO Auto-generated method stub

 

//在左边的碎片中获取按钮去动态的装入第二碎片

 

FragmentTransaction ft=fManager.beginTransaction();

 

ft.replace(R.id.center_fragment, new CenterListFragment(), "center");

 

ft.commit();

 

}

 

});

 

return v;

 

}

 

}

 

package com.zhongqihong.testfragmentapp;

 

 

 

import android.annotation.SuppressLint;

 

import android.app.FragmentManager;

 

import android.app.FragmentTransaction;

 

import android.app.ListFragment;

 

import android.os.Bundle;

 

import android.view.View;

 

import android.widget.ArrayAdapter;

 

import android.widget.ListView;

 

 

 

@SuppressLint("NewApi")

 

public class CenterListFragment extends ListFragment{

 

@Override

 

public void onListItemClick(ListView l, View v, int position, long id) {//该方法是监听ListFragment中每个Item点击事件

 

    RightFragment fRightFragment=new RightFragment();       

 

String content=l.getAdapter().getItem(position).toString();

 

             Bundle bundle=new Bundle();

 

             bundle.putString("item", content);

 

             fRightFragment.setArguments(bundle);

 

             FragmentManager fm=getFragmentManager();

 

             FragmentTransaction ft=fm.beginTransaction();

 

             ft.replace(R.id.right_fragment, fRightFragment, "right");

 

             ft.commit();

 

}

 

@Override

 

public void onCreate(Bundle savedInstanceState) {

 

// TODO Auto-generated method stub

 

super.onCreate(savedInstanceState);

 

String [] data=new String[30];

 

for (int i = 0; i < data.length; i++) {

 

data[i]="item"+i;

 

}

 

ArrayAdapter<String> adapter=new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, data);

 

setListAdapter(adapter);

 

}

 

}

 

 

package com.zhongqihong.testfragmentapp;

 

 

 

import android.app.Fragment;

 

import android.os.Bundle;

 

import android.view.LayoutInflater;

 

import android.view.View;

 

import android.view.ViewGroup;

 

import android.widget.TextView;

 

 

 

public class RightFragment extends Fragment{

 

@Override

 

public View onCreateView(LayoutInflater inflater, ViewGroup container,

 

Bundle savedInstanceState) {

 

View v=inflater.inflate(R.layout.right_fragment, container, false);

 

TextView tv=(TextView) v.findViewById(R.id.tv);

 

Bundle bundle=getArguments();

 

String str= bundle.get("item").toString();

 

tv.setText(str);

 

return v;

 

}

 

}


猜你喜欢

转载自blog.csdn.net/m0_37742332/article/details/80866109