安卓开发之Fragment数据传输到Activity+实例分析
Posted ggzx666
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安卓开发之Fragment数据传输到Activity+实例分析相关的知识,希望对你有一定的参考价值。
系列文章:安卓开发之Activity传输数据到Fragmen+实例分析
上一个文章讲了如何从Activity传输数据到Fragment,但是Fragment见到Activity总不能空着手吧。
这里简要介绍如何从Fragment传输数据到Activity。
一:步骤简介
1.编写接口在fragment中
private OnButtonClickListener mOnButtonClickListener;
//设置接口方法:
//定义接口
public interface OnButtonClickListener {
void onClick(String title);//这里title是传递给activity的数据
}
2.在fragment的onAttach方法中
super.onAttach(context);
mOnButtonClickListener =(OnButtonClickListener) getActivity();//获取实现接口的activity
3.在fragment的oncreateView中的button点击事件:
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mOnButtonClickListener!=null){//不为空的时候,就会执行回调
mButton="ggzx";//将ggzx回传
mOnButtonClickListener.onClick(mButton);
}
}
});
4.实现onclick方法
@Override
public void onClick(String title) {
setTitle(title);
Log.e(TAG, "activity onClick: ");
}
二:实战分析
场景说明:首先activity中顶层布局是限制布局,作为fragment的容器,activity启动时,动态加载fragment,当点击fragment的button时候,会将一个字符串回调给主活动,主活动的实现的接口中onclick方法接收到数据,将Title换成一个字符。
代码:
public class BlankFragment extends Fragment {
Button button;
String mButton;
String TAG="ggzx";
private OnButtonClickListener mOnButtonClickListener;
public static BlankFragment newInstance(String Button){
BlankFragment blankFragment=new BlankFragment();
Bundle bundle=new Bundle();
bundle.putString("bundle_Button",Button);
blankFragment.setArguments(bundle);
return blankFragment;
}
@Override
public void onAttach(@NonNull Context context) {
super.onAttach(context);
//获取实现接口的activity
mOnButtonClickListener =(OnButtonClickListener) getActivity();
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.fragment_blank,container,false);
button=view.findViewById(R.id.button);
Log.e(TAG, "Fragment onCreateView: ");
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mOnButtonClickListener!=null){//不为空的时候,就会执行回调
mButton="ggzx";//将ggzx回传
mOnButtonClickListener.onClick(mButton);
}
}
});
return view;
}
//定义接口
public interface OnButtonClickListener {
void onClick(String title);
}
}
MainActivity.java
public class MainActivity extends AppCompatActivity implements BlankFragment.OnButtonClickListener {
Button button2;
String TAG="ggzx";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.e(TAG, " activity onCreate: ");
BlankFragment blankFragment=BlankFragment.newInstance("ggzx");
getSupportFragmentManager()
.beginTransaction()
.add(R.id.Constrain_main_container,blankFragment)
.commit();
}
@Override
public void onClick(String title) {
setTitle(title);
Log.e(TAG, "activity onClick: ");
}
}
以上是关于安卓开发之Fragment数据传输到Activity+实例分析的主要内容,如果未能解决你的问题,请参考以下文章
安卓开发 viewpage加fragment加listview. 我想实现一个类似微信的界面。