2016-08-02 44 views
0

我有一个应用程序有一个MainActivity和两个片段。这些片段发送参数MainActivity这样:Android - 确定片段

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?

回答

1

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

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

和retrive的标签在你的onCreate()

+0

我知道它,但有没有办法使用像getClass的东西? – gigs

+0

是的,你可以使用this.getClass(),如果片段类的名称是唯一的,你可以使用它作为标识符。 – br00

+0

或者你也可以使用fragment.getTag(),但你必须在创建片段的过程中分配标签,就像fragmentTransaction.add(R.id.fragment_container,fragment,“your_tag”); – br00

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 
    } 
}