摘要:本文将带你了解Android应用开发Android 之Fragment,希望本文对大家学Android有所帮助。
本文将带你了解Android应用开发Android 之Fragment,希望本文对大家学Android有所帮助。
Android 之 Fragment(三)
Fragment与Activity的消息传递
1. 从Activity将消息传递到Fragment中:
在Activity中创建Bundle数据包,并调用Fragment的setArguments()方法
//Activity_main.java 中的onCreate()方法
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//在Activity中给Button设置事件监听
findViewById(R.id.activity_main_btn).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//获取编辑框的输入数据
String text = ((EditText)findViewById(R.id.activity_main_et)).getText().toString();
Fragment_main fragment = new Fragment_main(); //动态创建自己定义的Fragment_main的对象
Bundle bundle = new Bundle(); //创建Bundle数据包对象
bundle.putString(message, text); //向Bundle数据包中放入编辑框中的数据
fragment.setArguments(bundle);//将数据传递给自定义的Fragment_main对象
//获取系统的FragmentManager的FragmentTransaction事物
FragmentTransaction beginTransaction = getFragmentManager().beginTransaction();
beginTransaction.add(R.id.activity_main_layout, fragment, fragment);//向事物中添加Fragment
beginTransaction.commit();//向Activity提交事物
Toast.makeText(Activity_main.this, 向Fragment发送 + text + 消息, Toast.LENGTH_SHORT).show();
}
});
}
//Fragment_main.java中的onCreateView()方法
public View onCreateView(LayoutInflater inflater, ViewGroup conainer, Bundle savedInstanceState) {
//解析Fragment的Layout文件
View view = inflater.inflate(R.layout.fragment_main, conainer, false);
//绑定Fragment的TextView控件
textView = (TextView) view.findViewById(R.id.fragment_main_tv);
//获取从Activity传递过来数据包中的数据
String message = getArguments().get(message) + ;
textView.setText(message); //设置到TextView上
Toast.makeText(getActivity(), 收到来自Activity的消息: + message, Toast.LENGTH_SHORT).show();
return view;
}
2. 从Fragment将消息传递到Activity中:
在Fragment中定义一个内部回调接口,在让包含该Fragment的Activity实现该回调接口。这样Fragment可调用该回调方法将数据传递给Activity
public class Fragment_main extends Fragment {
private TextView textView;
private SendMessage sendMessage; //创建回调接口的对象
private String code = Fragment向Activity发送消息.....;
//在Fragment中创建一个回调接口
public interface SendMessage {
void send(String code);
}
@Override
public void onAttach(Context context) {
sendMessage = (SendMessage) context; //实例化回调接口对象
super.onAttach(context);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup conainer, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_main, conainer, false);
textView = (TextView) view.findViewById(R.id.fragment_main_tv);
String message = getArguments().get(message) + ;
textView.setText(message);
Toast.makeText(getActivity(), 收到来自Activity的消息: + message, Toast.LENGTH_SHORT).show();
Toast.makeText(getActivity(), code, Toast.LENGTH_SHORT).show();
sendMessage.send(code); //向Activity传递数据
return view;
}
}
//让Activity_main实现Fragment_main中的回调接口
public class Activity_main extends Activity implements SendMessage{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.activity_main_btn).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String text = ((EditText)findViewById(R.id.activity_main_et)).getText().toString();
Fragment_main fragment = new Fragment_main();
Bundle bundle = new Bundle();
bundle.putString(message, text);
fragment.setArguments(bundle);
FragmentTransaction beginTransaction = getFragmentManager().beginTransaction();
beginTransaction.add(R.id.activity_main_layout, fragment, fragment);
beginTransaction.commit();
Toast.makeText(Activity_main.this, 向Fragment发送 + text + 消息, Toast.LENGTH_SHORT).show();
}
});
}
//实现回调接口中的方法,直接获取数据
public void send(String code) {
Toast.makeText(this, 收到来自Fragment的消息: + code, Toast.LENGTH_SHORT).show();
}
}
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之Android频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号