初始化 Fragment
对于不需要接收参数的Fragment
,只需要实现public View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
方法即可
传参给 Fragment
Fragment
需要提供一个静态的创建方法, 通常叫做newInstance
public class DemoFragment extends Fragment {
public static DemoFragment newInstance(String someTitle) {
DemoFragment demoFragment = new DemoFragment();
args.putString("someTitle", someTitle);
demoFragment.setArguments(args);
return demoFragment;
}
...
}
你可以这样获取参数public class DemoFragment extends Fragment {
...
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Get arguments
String someTitle = getArguments().getString("someTitle", "");
}
...
}
你可以这样来调用DemoFragment
DemoFragment.newInstance("测试").show(getSupportFragmentManager(), "DemoFragment");
Activity 与 Fragment 之间的通讯
方法1
在Fragment
里通过getActivity()
来直接调用Activity
里面的方法
例如((MainActivity) getActivity()).doPositiveClick();
方法2
Activity
通过实现Fragment
里的接口来与Fragment
进行交互
例如
第一步
NewsItemFragment
定义OnNewsItemSelectedListener
接口
public class NewsItemFragment extends Fragment { |
第二步
NewsItemFragment
调用onNewsItemSelected
方法
Override |
第三步
MainActivity
里实现OnNewsItemSelectedListener
接口
public class MainActivity extends AppCompatActivity implements NewsItemFragment.OnNewsItemSelectedListener |
方法2比方法1更复杂,但是在某些情况下可能必须要这样实现
注意
Fragment
之间不可直接进行通讯,需通过Activity
来控制