2016-08-02 45 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 
    } 
}