您的位置:首页 > 移动开发 > Android开发

Fragment——Activity与Fragment之间进行通信

2016-03-14 20:32 531 查看
1、Activity向其所包含的Fragment传递数据

在Activity中放置一个EditText和Button,为Button设置点击监听事件,在onclick()方法中通过调用Fragment的setArguments()方法向Fragment中传递数据。

Activity类:

send = (Button) findViewById(R.id.send);
editText = (EditText) findViewById(R.id.editText);
send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String msg = editText.getText().toString();
Bundle bundle = new Bundle();
bundle.putString("msg", msg);
Fragment fragment = new Fragment();
fragment.setArguments(bundle);
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.fragmentView,fragment,"fragmentTest");
fragmentTransaction.commit();
}
});


Fragment类:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment, container, false);
TextView textView = (TextView) view.findViewById(R.id.textView);
Bundle bundle = getArguments();
if(bundle != null){
String msg = bundle.getString("msg");
textView.setText(msg);
}
return view;
}


2、Fragment向包含自身的Activity传递数据

在Fragment类内部声明一个接口,接口内声明回调函数,并使Activity实现该接口,通过Fragment.getActivity()方法获得一个接口的实例对象,当Fragment中的某一事件出发时即可调用回调函数来实现数据的传递。

Fragment类:

public class Fragment extends android.app.Fragment {
private onButtonClickedListener listener;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment, container, false);
try{
//通过getActivity()方法获取回调接口的一个实例对象
listener = (onButtonClickedListener)getActivity();
}catch(ClassCastException e)
{
throw new ClassCastException(getActivity().toString() + " must implement OnArticleSelectedListener");
}

Button returnMsg = (Button)view.findViewById(R.id.returnMsg);
//在Button的事件监听中调用回调函数,并将数据传入
returnMsg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
listener.getMessage("testMsg");
}
});
return view;
}

public interface onButtonClickedListener{
public void getMessage(String str);
}
}


Activity类:

public class MainActivity extends Activity implements Fragment.onButtonClickedListener{
private TextView tetView = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView)findViewById(R.id.textView);
}
//实现接口中的回调函数
@Override
public void getMessage(String str) {
textView = (TextView)findViewById(R.id.returnedMsg);
textView.setText(str);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Android