[android] 06_fragment之间的通信

Android 4.0

fragment之间的通信 

1、fragment之间通信,通过fragment附属的Activity作为中间人,来进行操作 Activity activity = getActivity();

2、
通过附属的Activity得到FragmentManager,通过id找到fragment2,然后对其进行操作
FragmentManager fragmentManager = activity.getFragmentManager();
Fragment2 fragment2 = (Fragment2) fragmentManager.findFragmentById(R.id.fragment2);
fragment2.setText("按钮1点击了。。。");
1、核心代码:
1、 Fragment1.java
package cn.zengfansheng.fragmentCommunication;
 
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentManager;
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;
 
public class Fragment1 extends Fragment {
 
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
 
        View view = inflater.inflate(R.layout.fragment1, null);
        // 1、通过view找到button
        Button bt1 = (Button) view.findViewById(R.id.click1);
        Button bt2 = (Button) view.findViewById(R.id.click2);
 
        // 2、设置监听事件
        bt1.setOnClickListener(new OnClickListener() {
 
            @Override
            public void onClick(View v) {
                System.out.println("按钮1,被点击了。。。");
                // 以下代码不能放外面,否则会报空指针访问异常。
 
                // 3、要想改变fragment2中的内容,通过fragment附属的Activity作为中间人,来进行操作
                Activity activity = getActivity();
 
                // 4、通过附属的Activity得到FragmentManager,通过id找到fragment2,然后对其进行操作
                FragmentManager fragmentManager = activity.getFragmentManager();
                Fragment2 fragment2 = (Fragment2) fragmentManager.findFragmentById(R.id.fragment2);
                fragment2.setText("按钮1点击了。。。");
            }
        });
        bt2.setOnClickListener(new OnClickListener() {
 
            @Override
            public void onClick(View v) {
                System.out.println("按钮2,被点击了。。。");
                // 3、要想改变fragment2中的内容,通过fragment附属的Activity作为中间人,来进行操作
                Activity activity = getActivity();
 
                // 4、通过附属的Activity得到FragmentManager,通过id找到fragment2,然后对其进行操作
                FragmentManager fragmentManager = activity.getFragmentManager();
                Fragment2 fragment2 = (Fragment2) fragmentManager.findFragmentById(R.id.fragment2);
                fragment2.setText("按钮2点击了。。。");
            }
        });
        return view;
    }
}
2、 Fragment2.java
package cn.zengfansheng.fragmentCommunication;
 
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 Fragment2 extends Fragment {
 
    private TextView tv;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
 
        View view = inflater.inflate(R.layout.fragment2, null);
        // 操作fragment中的文本,找Fragment2
        tv = (TextView) view.findViewById(R.id.tv);
        return view;
    }
 
    /**
     * 设置fragment2中的TextView的内容
     * @param info
     */

    public void setText(String info) {
        tv.setText(info);
    }
}
2、结果: