我现在在数组列表中存储一些值,我想将相同的数组列表对象传递给活动的片段。那么如何从活动中发送数组列表对象并在片段中接收相同的对象。
答案 0 :(得分:1)
在您的活动中试用此代码,它是我工作的应用程序中的代码段。
@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");
}
答案 1 :(得分: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;
}
}
答案 2 :(得分:0)
传递活动应遵循以下几行
ArrayList<ObjectName> arraylist = extras.getParcelableArrayList("valuesArray");
让里面的片段按照这一行
int ID;
if (int.TryParse(Request.QueryString["ID"], out ID))
{
IDHdn.Value = ID.ToString();
IDLbl.Text = IDHdn.Value;
}
答案 3 :(得分:0)
将您的数组放入Actiivty中的setargument并获取Array 片段中的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");