fragment的实现与互相通信
Android3.0后出来的新控件,主要是为了在平板和手机屏幕的兼容
实现效果:
点击Sd卡,出现SD目录下的所有文件和文件夹,点击外置Sd卡,出现外置Sd卡目录下的文件和文件夹.点击U盘,出现U盘目录下所有文件和文件夹。
实现如上图的效果,左边点击SD卡,右边显示gridView的内容,需要定义一个主Activity,main.xml中定义好布局,如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<LinearLayout
android:id="@+id/root"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="vertical"
>
</LinearLayout>
<LinearLayout
android:id="@+id/content"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="vertical" >
</LinearLayout>
</LinearLayout>
Activity中加载方式:
private FragmentManager manager;
private FragmentTransaction transacion;
manager = getFragmentManager();
transacion = manager.beginTransaction();
rootfragment root = new rootfragment();
contentfragment content = new contentfragment();
transacion.add(R.id.root, root,"root");
transacion.add(R.id.content,content,"content");
transacion.commit();
接着定义左边和右边的fragment,先定义左边布局文件的内容,在rootfragment.java中进行加载,
public class rootfragment extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
return inflater.inflate(R.layout.fragment_root, null);
}
}
同样的方式加载右边显示的内容,接着需要将两个fragment之间进行数据的传递:
contentfragment details = (contentfragment)getFragmentManager().findFragmentByTag("content");
获取到右边的fragment,通过该对象就可以将数据传递给contentfragment类,操作contentfragment里面的函数。这里需要传递文件路径给contentfragment,再让contentfragment进行刷新显示就可以了