2017-06-20 54 views

回答

0

在您的活動中試用此代碼,它是來自我的工作應用程序的代碼片段。

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    yourArrayList.add("test"); 
    yourArrayList.add("test2") 
    Bundle bundle = new Bundle(); 
    bundle.putStringArrayList("arrayList", yourArrayList); 
    yourFragment yourFragment = new yourFragment(); 
    yourFragment.setArguments(bundle); 
    fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
    fragmentTransaction.add(R.id.main_container, yourFragment); 
    fragmentTransaction.commit(); 
} 

在你的片段,你可以這樣

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

    ArrayList<String> values = getArguments().getStringArrayList("arrayList"); 

} 
0

您可以通過下面的片段,活動的通信通常的方式做到這一點訪問值。那就是:

1)在你的Fragment類中聲明一個公共接口。

2)在這個接口裏面爲你的列表聲明一個getter方法。

3)讓你的各個Activity實現這個接口。

4)內,您的片段,這樣做:

@Override 
public void onAttach(Context context) { 
    super.onAttach(context); 
    YourInterfaceType activity = (YourInterfaceType) context; 
    List<> yourList = activity.getMyList(); 
} 

爲了更清楚:

您的活動將是如下:

public class MyActivity extends Activity implements YourInterfaceType{ 
    @Override 
    public void getMyList(){ 
     return yourList; 
    } 
} 
0

通活動應遵循此行

Bundle bundle = new Bundle(); 
    bundle.putStringArrayList("valuesArray", namesArray); 
    namesFragment myFragment = new namesFragment(); 
    myFragment.setArguments(bundle); 
    fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
    fragmentTransaction.add(R.id.main_container, myFragment); 
    fragmentTransaction.commit(); 

中獲取片段內遵循這一行

ArrayList<ObjectName> arraylist = extras.getParcelableArrayList("valuesArray"); 
+0

你有沒有試過這一點,併成功了嗎? – Sanoop

+0

是的,我獲得成功 –

+0

嗯ArrayList arraylist'肯定這條線。它會用於'T'對象嗎? – Sanoop

0

只要把你的陣列setargument在Actiivty和片段得到陣列 getArgument。

活動

Bundle bundle = new Bundle(); 
    bundle.putStringArrayList("valuesArray", namesArray); 
    namesFragment myFragment = new namesFragment(); 
    myFragment.setArguments(bundle); 
    fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
    fragmentTransaction.add(R.id.main_container, myFragment); 
    fragmentTransaction.commit(); 

片段

ArrayList<Model> values = getArguments().getStringArrayList("valuesArray"); 
相關問題