一、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"; }