您的位置:首页 > 其它

Fragment与Activity之间的传值和接口回调

2016-11-07 16:27 417 查看
首先创建一个activity和一个fragment

把fragment与activity之间建立连接

在fragment里面写个接口

public class MyFragment extends Fragment {

private View view;
private Button fr_btn1;
private Button fr_btn2;
private Button fr_btn3;
private Button fr_btn4;

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

view =inflater.inflate(R.layout.myfragment,null);

//获取控件
initview();

return view;
}
//定义回调接口
public interface CallBack
{
public void backlister(String s);
}
//定义供Activity调用的函数
//可以之间用构造方法
CallBack callBack;

public MyFragment(CallBack callBack) {
this.callBack = callBack;
}

private void initview() {
fr_btn1 =(Button)view.findViewById(R.id.fr_btn1);
fr_btn2 =(Button)view.findViewById(R.id.fr_btn2);
fr_btn3 =(Button)view.findViewById(R.id.fr_btn3);
fr_btn4 =(Button)view.findViewById(R.id.fr_btn4);

fr_btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//把Button的值赋给接口中的方法     callBack.backlister(fr_btn1.getText().toString());
}
});
fr_btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
callBack.backlister(fr_btn2.getText().toString());
}
});
fr_btn3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
callBack.backlister(fr_btn3.getText().toString());
}
});
fr_btn4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
callBack.backlister(fr_btn4.getText().toString());
}
});
}
}


Activity中的操作

public class MainActivity extends AppCompatActivity {

private Button btn1;
private Button btn2;
private Button btn3;
private Button btn4;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

//获取控件
btn1 =(Button)findViewById(R.id.btn1);
btn2 =(Button)findViewById(R.id.btn2);
btn3 =(Button)findViewById(R.id.btn3);
btn4 =(Button)findViewById(R.id.btn4);

//获取fragment对象 实现其中的接口方法
MyFragment myfragment = new MyFragment(new MyFragment.CallBack() {
@Override
public void backlister(String s) {
if (s.equals("1")){
//取出方法中的值
btn1.setText(s);
}else if (s.equals("2")){
btn2.setText(s);
}else if (s.equals("3")){
btn3.setText(s);
}else if (s.equals("4")){
btn4.setText(s);
}
}
});
Chagefragment(myfragment);

}
//切换Fragment
public void Chagefragment(Fragment fr){
//得到fragment管理类
Fra
94c5
gmentManager manager=getSupportFragmentManager();
//得到事物
FragmentTransaction replace = manager.beginTransaction().replace(R.id.zhufragment, fr);

//提交
replace.commit();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: