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效果: