Activity与Fragment之间的相互传值
程序员文章站
2022-05-14 10:03:34
...
一:Activity向Fragment传值
用setArguments的方式
在Fragment的java文件中创建数据接受的代码
public static final String BUNDLE_TITLE = "bundle_title";
private String mTitle = "imooc";
创建一个新的静态方法
public static ListFragment newInstance(String title){
ListFragment fragment = new ListFragment();
Bundle bundle = new Bundle();
bundle.putString(BUNDLE_TITLE, title);
fragment.setArguments(bundle);
return fragment;
}
在oncrete方法中进行接收
if(getArguments() != null){
mTitle = getArguments().getString(BUNDLE_TITLE);
便可在oncreateView中更改代码为
textView.setText(mTitle);
最后在Activity中oncreate方法中传输数据为
二:Fragment向Activity中传值
没有好的方法,只能进行回调
1.在Fragment中创建回调接口
// 设置接口的方法
public void setOnTitleClickListener(OnTitleClickListener onTitleClickListener) {
mOnTitleClickListener = onTitleClickListener;
}
// 定义变量
private OnTitleClickListener mOnTitleClickListener;
// 定义接口
public interface OnTitleClickListener{
void onClick(String title);
}
2.在oncraeteView中创建一个点击回调的方法
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(mOnTitleClickListener != null){
mOnTitleClickListener.onClick(mTitle);
}
}
});
3,在Activity中继承接口
public class MainActivity extends AppCompatActivity implements ListFragment.OnTitleClickListener{
4.修改此处的代码
ListFragment listFragment = ListFragment.newInstance("list");
getSupportFragmentManager()
.beginTransaction()
.add(R.id.listContainer, listFragment)
.commit();
listFragment.setOnTitleClickListener(this);
-
加入
public void onClick(String title) { setTitle(title); }
补充:如果要传递一个对象时应该
在Fragment中
private User mUser;
public void setUser(User user) {
mUser = user;
}
public class User {
}
public static ListFragment newInstance(String title, User user){
ListFragment fragment = new ListFragment();
Bundle bundle = new Bundle();
bundle.putString(BUNDLE_TITLE, title);
fragment.setArguments(bundle);
fragment.setUser(user);
return fragment;
}
便完成了对象的传递。
推荐阅读
-
详解Android activity与fragment之间的通信交互
-
Fragment和Activity之间传值的方法
-
C#-Xamarin的Activity传值与Fragment引用
-
Activity与Fragment之间的相互传值
-
Fragment 与 Activity之间的完美跳转——Navigation为例
-
Fragment与Activity之间生命周期的关系
-
Activity与Activity,Activity与Fragment,Fragment 与 Fragment之间值的传递
-
Fragment和Activity之间传值的方法
-
C#-Xamarin的Activity传值与Fragment引用
-
Fragment好Activity之间的数据交换(传值)