Fragment是Activity上的碎片,Fragment之间可以进行信息交互。
MainActivity.java代码如下:
public class MainActivity extends FragmentActivity {
private FragmentManager manager;
private FragmentTransaction transaction;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/*获取manager*/
manager = this.getSupportFragmentManager();
/*创建事物*/
transaction = manager.beginTransaction();
/*创建leftFragment*/
LeftFragment leftFragment = new LeftFragment();
/*创建RightFragment*/
RightFragment rightFragment = new RightFragment();
/*通过事物把两个fragment分别添加到对应的容器中*/
transaction.add(R.id.left, leftFragment, "left");
transaction.add(R.id.right, rightFragment, "right");
/*提交事物*/
transaction.commit();
}
}
LeftFragment.java代码如下:
public class LeftFragment extends Fragment {
private Button button;
private FragmentManager manager;
public LeftFragment() {
}
/*在onCreate方法里面进行相关数据的初始化*/
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/*获取manager*/
manager = getFragmentManager();
}
/*这个方法是适合做数据的更新操作*/
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
/*动态加载布局*/
View view = inflater.inflate(R.layout.left, null);
/*从动态布局中获取按钮*/
button = (Button) view.findViewById(R.id.button1);
/*设置按钮的监听事件*/
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
/*通过manager获取右侧的Fragment(千万不能去new RightFragment对象,因为在Mainactivity中,我们通过事物把,RightFragment添加到布局中了,所以只能通过manager获取)*/
RightFragment rightFragment = (RightFragment) manager.findFragmentById(R.id.right);
/*获取文本框输入值*/
String msg = ((EditText)rightFragment.getView().findViewById(R.id.editText2)).getText().toString();
/*打印*/
Toast.makeText(getActivity(), "-right->>" + msg, 1).show();
}
});
return view;
}
@Override
public void onPause() {
// TODO Auto-generated method stub
super.onPause();
}
}
RightFragment.java代码如下:
public class RightFragment extends Fragment {
private Button button;
private FragmentManager manager;
public RightFragment() {
}
/*在onCreate方法里面进行相关数据的初始化*/
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/*获取manager*/
manager = getFragmentManager();
}
/*这个方法是适合做数据的更新操作*/
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
/*动态加载布局*/
View view = inflater.inflate(R.layout.right, null);
/*从动态布局中获取按钮*/
button = (Button) view.findViewById(R.id.button2);
/*设置按钮的监听事件*/
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
/*通过manager获取左侧Fragment*/
LeftFragment leftFragment = (LeftFragment) manager.findFragmentById(R.id.left);
/*获取左侧文本框的值*/
String msg = ((EditText)leftFragment.getView().findViewById(R.id.editText1)).getText().toString();
/*打印*/
Toast.makeText(getActivity(), "-left->>" + msg, 1).show();
}
});
return view;
}
@Override
public void onPause() {
// TODO Auto-generated method stub
super.onPause();
}
}
activity_main.xml代码:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
tools:context=".MainActivity" >
<LinearLayout
android:id="@+id/left"
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="vertical" >
</LinearLayout>
<LinearLayout
android:id="@+id/right"
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="vertical" >
</LinearLayout>
</LinearLayout>
left.xml和right.xml的代码就不贴了,都比较简单!
demo效果: