fragment与activity通讯

一、activity向fragment传递数据

(方式一)

fragment中:

private String mArgument;
public static final String ARGUMENT = "argument";

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Bundle bundle = getArguments();
    if (bundle != null) {
        mArgument = bundle.getString(ARGUMENT);
        Log.e("传来的数据", mArgument );
    }
}

/**
 * 传入需要的参数,设置给arguments
 *
 * @param argument
 * @return
 */
public static TestFragmentA newInstance(String argument) {
    Bundle bundle = new Bundle();
    bundle.putString(ARGUMENT, argument);
    TestFragmentA contentFragment = new TestFragmentA();
    contentFragment.setArguments(bundle);
    return contentFragment;
}
activity中:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    fragment = TestFragment.newInstance("123");
    FragmentManager fm = getFragmentManager();
    FragmentTransaction ft = fm.beginTransaction();
    ft.add(R.id.content, fragment, "A");
    ft.commit();

}

(方式二)(为什么这么简单,不知道会不会有什么问题,求大神指点)

fragment中:

public String getData() {
    return "hello";
}
activity中:

fragmentA = new TestFragmentA();
Log.e("方法返回的数据", fragmentA.getData() );

二、fragment向activity中传递数据

fragment中:

public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    Log.e("TestFragment", "onCreateView");
    View view = inflater.inflate(R.layout.layout_fragmenta, container, false);
    //在需要传递数据的地方调用
    if (getActivity() instanceof AbtnClikListener) {

        ((AbtnClikListener) getActivity()).showByName("hello");
    }
    return view;
}

public interface AbtnClikListener {
    void showByName(String name);
}
activity中:(需要实现AbtnClikListener接口)

@Override
public void showByName(String name) {
    Log.e("获取到的数据", name);
}

(方式二)

fragment中

MainActivity mainActivity = (MainActivity) getActivity();
Log.e("方法中的数据", mainActivity.getData() );
activity中:

public String getData() {
    return "hello";
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值