Java 如何将ArrayList从活动传递到片段
我试图做的是将Java 如何将ArrayList从活动传递到片段,java,android,android-fragments,arraylist,Java,Android,Android Fragments,Arraylist,我试图做的是将数组列表从活动发送到列表片段 因此,我可以在表格布局中使用片段 没有必要使用列表片段,我可以使用任何类型的片段,但我正在尝试了解这个想法 这是我的主要活动: FragmentTransaction fragmentTransaction; ArrayList<String> namesArray = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState
数组列表从活动发送到列表片段
因此,我可以在表格布局中使用片段
没有必要使用列表片段
,我可以使用任何类型的片段
,但我正在尝试了解这个想法
这是我的主要活动:
FragmentTransaction fragmentTransaction;
ArrayList<String> namesArray = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
namesArray.add("Android");
namesArray.add("Iphone");
namesArray.add("Windows Phone");
Bundle bundle = new Bundle();
bundle.putStringArrayList("valuesArray", namesArray);
namesFragment myFragment = new namesFragment();
myFragment.setArguments(bundle);
fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.add(R.id.main_container, new namesFragment());
fragmentTransaction.commit();
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
ArrayList<String> values = getArguments().getStringArrayList("valuesArray");
ArrayAdapter<String> adapter = new ArrayAdapter<>(getActivity(), android.R.layout.simple_list_item_1, values);
setListAdapter(adapter);
}
FragmentTransaction FragmentTransaction;
ArrayList namesArray=新的ArrayList();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
namesArray.add(“安卓”);
namesArray.add(“Iphone”);
namesArray.add(“Windows Phone”);
Bundle=新Bundle();
bundle.putStringArrayList(“valuesArray”,namesArray);
namesFragment myFragment=新的namesFragment();
setArguments(bundle);
fragmentTransaction=getSupportFragmentManager().beginTransaction();
添加(R.id.main_容器,新名称片段());
fragmentTransaction.commit();
}
我的列表片段:
FragmentTransaction fragmentTransaction;
ArrayList<String> namesArray = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
namesArray.add("Android");
namesArray.add("Iphone");
namesArray.add("Windows Phone");
Bundle bundle = new Bundle();
bundle.putStringArrayList("valuesArray", namesArray);
namesFragment myFragment = new namesFragment();
myFragment.setArguments(bundle);
fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.add(R.id.main_container, new namesFragment());
fragmentTransaction.commit();
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
ArrayList<String> values = getArguments().getStringArrayList("valuesArray");
ArrayAdapter<String> adapter = new ArrayAdapter<>(getActivity(), android.R.layout.simple_list_item_1, values);
setListAdapter(adapter);
}
@覆盖
已创建ActivityState上的公共无效(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
ArrayList values=getArguments().getStringArrayList(“valuesArray”);
ArrayAdapter=新的ArrayAdapter(getActivity(),android.R.layout.simple\u list\u item\u 1,值);
setListAdapter(适配器);
}
上面的代码给了我:
不幸的是,应用程序已停止
那么我如何才能实现这样的目标呢?您正在两次实例化您的片段
只需将代码更改为:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
namesArray.add("Android");
namesArray.add("Iphone");
namesArray.add("Windows Phone");
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();
}
您正在实例化片段两次
只需将代码更改为:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
namesArray.add("Android");
namesArray.add("Iphone");
namesArray.add("Windows Phone");
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();
}
答案不是这样,但您可以通过将最后三行替换为以下内容来避免创建片段事务对象
getSupportFragmentManager()
.beginTransaction()
.add(R.id.main_container, new namesFragment())
.commit();
答案不是这样,但您可以通过将最后三行替换为以下内容来避免创建片段事务对象
getSupportFragmentManager()
.beginTransaction()
.add(R.id.main_container, new namesFragment())
.commit();
发布logcat错误请正如Juan所提到的,当你遇到这样的崩溃时,你应该始终发布你的logcat错误消息,这样我们就可以更容易地找到导致崩溃的原因。此外,您提到“以及如何将片段中的ArrayList显示为ListView”-这应该作为一个单独的问题发布。发布logcat错误请正如Juan所提到的,当您遇到这样的崩溃时,您应该始终发布logcat错误消息,以便我们更容易地找出导致崩溃的原因。另外,您提到“以及如何将片段中的ArrayList显示为ListView”-这应该作为一个单独的问题发布。