Amr*_*ero 1 java android arraylist android-fragments
我要做的是ArrayList<String>从Activity发送到ListFragment
所以我可以使用片段 TableLayout
没有必要使用ListFragment,我可以使用任何类型的片段,但我正在尝试获得这个想法.
这是我的MainActivity:
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();
}
Run Code Online (Sandbox Code Playgroud)
我的ListFragment:
@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);
}
Run Code Online (Sandbox Code Playgroud)
我搜索了很多,但我没有找到任何有用的东西,上面的代码给了我 Unfortunately app has stopped
那么我怎样才能实现这样的目标呢?
您正在实例化您的片段两次:D
只需将您的代码更改为:
@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();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10267 次 |
| 最近记录: |