如何以编程方式访问导航到侧边导航菜单项(片段)?
How to access navigate to side navigation menu items(Fragments) programatically?
我正在尝试从代码访问侧边导航抽屉项目,作为对侧边导航抽屉中其他片段项目点击事件的响应。
Google 到目前为止没有帮助。
编辑:进一步阐述
例如:我在侧导航栏的第一个片段中有一个按钮。我正在尝试访问按钮的 onclick 事件中侧导航栏的第二个片段。
您可以在设置适配器时指定项目。根据用户点击的项目调用 selectItem() 并选择位置 "position" 的项目。第一项的索引为零。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mDrawerListView = (ListView) inflater.inflate(
R.layout.fragment_navigation_drawer, container, false);
mDrawerListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
selectItem(position);
}
});
mDrawerListView.setAdapter(new ArrayAdapter<String>(
getActionBar().getThemedContext(),
android.R.layout.simple_list_item_activated_1,
android.R.id.text1,
str[]));
mDrawerListView.setItemChecked(mCurrentSelectedPosition, true);
return mDrawerListView;
}
稍后您还可以通过以下函数获取项目的位置。
private void selectItem(int position) {
mCurrentSelectedPosition = position;
MainActivity.EXT_POSITION = position;
if (mDrawerListView != null) {
mDrawerListView.setItemChecked(position, true);
}
if (mDrawerLayout != null) {
mDrawerLayout.closeDrawer(mFragmentContainerView);
}
if (mCallbacks != null) {
mCallbacks.onNavigationDrawerItemSelected(position);
}
}
如果您想根据位置调用不同的片段,那么可以通过使用导航抽屉项目的位置从您的 activity 完成。
@Override
public void onNavigationDrawerItemSelected(int position) {
// update the main content by replacing fragments
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.container, MainFragment.newInstance(position + 1))
.commit();
}
我希望这对您有所帮助。如果您详细说明您的问题或使用代码尝试一些方法会更好。
我正在尝试从代码访问侧边导航抽屉项目,作为对侧边导航抽屉中其他片段项目点击事件的响应。
Google 到目前为止没有帮助。
编辑:进一步阐述
例如:我在侧导航栏的第一个片段中有一个按钮。我正在尝试访问按钮的 onclick 事件中侧导航栏的第二个片段。
您可以在设置适配器时指定项目。根据用户点击的项目调用 selectItem() 并选择位置 "position" 的项目。第一项的索引为零。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mDrawerListView = (ListView) inflater.inflate(
R.layout.fragment_navigation_drawer, container, false);
mDrawerListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
selectItem(position);
}
});
mDrawerListView.setAdapter(new ArrayAdapter<String>(
getActionBar().getThemedContext(),
android.R.layout.simple_list_item_activated_1,
android.R.id.text1,
str[]));
mDrawerListView.setItemChecked(mCurrentSelectedPosition, true);
return mDrawerListView;
}
稍后您还可以通过以下函数获取项目的位置。
private void selectItem(int position) {
mCurrentSelectedPosition = position;
MainActivity.EXT_POSITION = position;
if (mDrawerListView != null) {
mDrawerListView.setItemChecked(position, true);
}
if (mDrawerLayout != null) {
mDrawerLayout.closeDrawer(mFragmentContainerView);
}
if (mCallbacks != null) {
mCallbacks.onNavigationDrawerItemSelected(position);
}
}
如果您想根据位置调用不同的片段,那么可以通过使用导航抽屉项目的位置从您的 activity 完成。
@Override
public void onNavigationDrawerItemSelected(int position) {
// update the main content by replacing fragments
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.container, MainFragment.newInstance(position + 1))
.commit();
}
我希望这对您有所帮助。如果您详细说明您的问题或使用代码尝试一些方法会更好。