如果加载的fragment不需要替换,那么直接加载就可以
这是xml布局:
<fragment
android:layout_width="130dp"
android:layout_height="match_parent"
android:id="@+id/fragment_menu"
android:name="com.example.fragmentDemo.fragment01"/>
fragment需要集成fragment,如果是低版本需要继承V4包的,我这里直接继承android自带的
public class fragment01 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment01,container,false);
}
}
然后是activity中设置引用即可:
<fragment
android:layout_width="130dp"
android:layout_height="match_parent"
android:id="@+id/fragment_menu"
android:name="com.example.fragmentDemo.fragment01"/>
效果图:
如果多个fragment需要进行切换,那么咋搞呢,先来看XML
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/fragment_content"/>
代码中设置默认fragment
private void init() {
fragment02 = new Fragment02();
}
private void setDefaultFragment() {
fm = getFragmentManager();
transaction = fm.beginTransaction();
transaction.replace(R.id.fragment_content, fragment02);
transaction.commit();
}
切换fragment代码:
public void onMenuSelect(int position) {
FragmentManager fm = getFragmentManager();
FragmentTransaction transaction = fm.beginTransaction();
switch (position){
case 0:
transaction.replace(R.id.fl_content, fragment02);
break;
case 1:
transaction.replace(R.id.fl_content, fragment03);
break;
default:
break;
}
transaction.commit();
}
这里涉及到了fragment间通信:
这里简单讲解下
首先在fragment里写一个接口
private onButtonClickListener mCallBack;
public interface onButtonCliskListener{
void onbuttonClick(int index);
}
activity中实现此接口,即可回调activity的现实方法了,其中fragment中的onAttach里捕获activity的实现
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
mCallBack = (onButtonClickListener) activity;
}
activity和fragment通信的话直接在fragment里创建一个public方法调用即可
这是效果图:
切换fragment03的图就不帖了,都一样!
就写到这里,今天写了好久包括demo,结果写完提交发布发现丢失了,好郁闷,还得重写,导致第二遍直接没心情写了....