如何将参数传递给当前活动的片段?

时间:2017-11-23 11:10:40

标签: android android-fragments

我有一个活动,根据按钮点击实例化4个不同的碎片。 我必须将其他值传递给我当前处于活动状态的片段。

最初,当我通过setArguments传递值时,正在传递值。但是第二次没有将值传递给Fragment。

我尝试在onCreate和onCreateView方法中记录并放置断点,但是第二次没有调用这些方法。

这是我的代码

活动代码

Bundle bundle = new Bundle();
bundle.putInt("from", "1");
bundle.putString("label","One");

MyFragment1 myFragment1 = new MyFragment1();
myFragment1.setArguments(bundle);
getSupportFragmentManager()
.beginTransaction()
.addToBackStack(null)
.replace(R.id.fragment1, myFragment1)
.commitAllowingStateLoss();

片段中的代码

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);


    Bundle b = getArguments();
    if(b!=null)
    { 

    }


}

2 个答案:

答案 0 :(得分:0)

来自活动

Bundle bundle = new Bundle();
bundle.putInt("from", "1");
bundle.putString("label","One");
// set Fragmentclass Arguments
Fragmentclass fragobj = new Fragmentclass();
fragobj.setArguments(bundle);

并在Fragment onCreateView方法中:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    String label = getArguments().getString("label");    
    int i=getArguments().getInt("from"); 
    return inflater.inflate(R.layout.fragment, container, false);
}

答案 1 :(得分:0)

找到解决方案

我在活动中的onCreate中提供了这行代码。

MyFragment1 myFragment1 = new MyFragment1();

在将它传递给碎片之前我必须重新复活。