我只有一個Activity
只有一個關聯的Fragment
。 Fragment
是Navigation Drawer
的一部分。現在我有一個不斷變化的ArrayList<String>
。我希望它能夠在我打開Navigation Drawer
時將ArrayList
傳遞給Fragment
。從活動發送數據(ArrayList)到片段
Fragment
有一個ListView
它填充了ArrayList
。
這是Activity
與Toolbar
代碼和DrawerLayout
:
toolbar = (Toolbar) findViewById(R.id.app_bar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowHomeEnabled(true);
OnlineNavDrawerFragment drawerFragment = (OnlineNavDrawerFragment)
getSupportFragmentManager().findFragmentById(R.id.fragmentUsers);
drawerFragment.setUp((DrawerLayout) findViewById(R.id.drawer_layout), toolbar);
這是Fragment
的相應代碼:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_online_nav_drawer, container, false);
ListView lvOnline = (ListView) view.findViewById(R.id.lvOnlineUsers);
return view;
}
public void setUp(DrawerLayout drawerLayout, Toolbar toolbar) {
mDrawerLayout = drawerLayout;
mDrawerToggle = new ActionBarDrawerToggle(getActivity(), drawerLayout,
toolbar, R.string.drawer_open, R.string.drawer_close) {
@Override
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
getActivity().invalidateOptionsMenu();
}
@Override
public void onDrawerClosed(View drawerView) {
super.onDrawerClosed(drawerView);
getActivity().invalidateOptionsMenu();
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
mDrawerLayout.post(new Runnable() {
@Override
public void run() {
mDrawerToggle.syncState();
}
});
}
我面臨着以下問題:如何通過ArrayList<String>
從Activity
到Fragment
。
此外,我看不到Activity
代碼中的哪一點可以實際傳遞數據。
PS:大部分代碼都是YouTube視頻系列中顯示的代碼的修改版本。它以現在的形式運作。
這取決於您的代碼。你必須至少展示你的活動的代碼。 – eleven
@Foxinsocks爲「Activity」和「Fragment」添加了代碼。 –
而不是在打開抽屜時將數據傳遞給片段。在需要時,讓片段使用接口從活動中提取數據。通常在onResume()中。 – doubleA