Android - 确定片段

时间:2016-08-02 14:31:10

标签: android android-fragments

我有一个应用程序,它有一个MainActivity和两个Fragments。这些片段以这种方式向MainActivity发送参数:

Bundle args = new Bundle();
args.putLong("id",id);
sf.setArguments(args);

然后MainActivity在onCreate()方法

中接受参数
protected void onCreate(Bundle savedInstanceState) {
    private long wayId = getArguments().getLong("id");
}

如何确定哪个片段将此参数发送到MainActivity?

2 个答案:

答案 0 :(得分:1)

您可以在分组中添加另一个参数,例如片段的标记。

Bundle args = new Bundle();
args.putLong("id",id);
args.putString("fragmentTag", fragmentTag);
sf.setArguments(args);

并在onCreate()

中检索标记

答案 1 :(得分:1)

您可以为每个片段定义单独的inrterface

public class FragmentA extends Fragment {
    public static interface FragmentAInterface {
        void doSomething(String data);
    }
}
public class FragmentB extends Fragment {
    public static interface FragmentBInterface {
        void doSomething(String data);
    }
}

然后在你的活动中:

    public class MyActivity extends AppCompatActivity implements FragmentA.FragmentAInterface, FragmentB.FragmentBInterface{

    @Override
    public void doSomething(String data) {
        //Guaranteed to come from Fragment A
    }

    @Override
    public void doOtherThing(String data) {
        //Guaranteed to come from Fragment B
    }
}