- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个包含 3 个菜单项的抽屉导航。在我的 MainActivity.java
中,我设置了 onNavigationItemSelected()
监听器来处理单击的导航项。单击时,将显示一个自定义抽屉对话框。
抽屉导航
自定义抽屉对话框(平铺层)
MainActivity.java
public boolean onNavigationItemSelected(MenuItem item)
{
// Create custom drawer dialog
drawerDialog = new Dialog(MainActivity.this);
drawerDialog.setContentView(R.layout.dialog_drawer);
// Handle navigation view item clicks here.
int selectedItemId = item.getItemId();
if (selectedItemId == R.id.layerMenu)
{
...
}
else if (selectedItemId == R.id.basemapMenu)
{
...
}
else if (selectedItemId == R.id.tiledLayerMenu)
{
// Setup drawer dialog (Tiled Layers)
}
// Show drawer dialog
drawerDialog.show();
...
mDrawerLayout.closeDrawer(GravityCompat.START);
return true;
}
我还有一个自定义通知对话框。当“找不到数据”通知对话框出现时,我有将打开抽屉对话框(平铺层)的下载按钮。
自定义通知对话框(未找到数据)
现在.. 如何在点击下载按钮时以编程方式触发onNavigationItemSelected()
?这是我尝试过但没有成功的方法:
downloadButton.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
// Trying to click Tiled Layers navigation item here
// 1
//NavigationView navigationView = (NavigationView) findViewById(R.id.mainNavView);
//navigationView.getMenu().getChildAt(2).performClick();
// 2
//((NavigationMenuItemView) findViewById(R.id.tiledLayerMenu)).callOnClick();
// 3
//onNavigationItemSelected(navigationView.getMenu().getItem(2))); //
// Close dialog
noticeDialog.dismiss();
}
});
请帮帮我。谢谢。
好吧..我只是简单地做了一些像 LQ Gioan 建议的事情并且它有效。我将 onNavigationItemSelected()
中的所有长代码移动到新函数 showDrawerDialog
并传递项目 ID。在按钮点击中,我也这样做。无需找出 MenuItem
,只需传递项目 ID。谢谢!
MainActivity.java
public boolean onNavigationItemSelected(MenuItem item)
{
int selectedItemId = item.getItemId();
showDrawerDialog(selectedItemId);
mDrawerLayout.closeDrawer(GravityCompat.START);
return true;
}
public void showDrawerDialog(final int selectedItemId)
{
// Create custom drawer dialog
drawerDialog = new Dialog(MainActivity.this);
drawerDialog.setContentView(R.layout.dialog_drawer);
// Handle navigation view item clicks here.
//int selectedItemId = item.getItemId();
if (selectedItemId == R.id.layerMenu)
{
...
}
else if (selectedItemId == R.id.tiledLayerMenu)
{
// Setup drawer dialog (Tiled Layers)
}
// Show drawer dialog
drawerDialog.show();
}
点击下载按钮,
downloadButton.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
// Trying to click Tiled Layers navigation item here
showDialogDrawer(R.id.tiledLayerMenu);
// Close dialog
noticeDialog.dismiss();
}
});
最佳答案
小改动 onNavigationItemSelected(MenuItem item)
首先声明一个int类变量
//clicked id holder
int clicked = 0;
现在在 onNavigationItemSelected(MenuItem item)
中使用它
public boolean onNavigationItemSelected(MenuItem item)
{
int selectedItemId = item.getItemId();
if (selectedItemId == R.id.layerMenu || clicked == R.id.layerMenu)
{
//your action code
}
else if (selectedItemId == R.id.tiledLayerMenu || clicked == R.id.tiledLayerMenu)
{
// your action code
}
//clear clicked value
clicked = 0;
mDrawerLayout.closeDrawer(GravityCompat.START);
return true;
}
在你点击的按钮中编辑
downloadButton.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
//setting id to clicked variable
clicked = R.id.m_layerMenu;
//fire the navigation selection
onNavigationItemSelected(navigationView.getMenu().getItem(0));
}
});
我会做并为您测试...它 100% 有效...试试吧..祝您好运。
关于android - 如何在 Android 中以编程方式触发 onNavigationItemSelected()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46460752/
当单击任何菜单项时,没有响应,他们应该导航到目标 fragment @Override public boolean onNavigationItemSelected(@NonNull
我想在有人点击导航 View 时调用 onNavigationItemSelected。代码不调用 onNavigationItemSelected 方法: public boolean onNav
我正在为 android 3+ 开发 在我的操作栏中,我有一个下拉列表(请参阅 how to hide/unhide the actionbar list on android 3? 了解我想要的下拉
我在我的应用程序中实现了一个导航 View ,它是由 AndroidStudio 自动创建的。当我创建一个新项目时,我选择了 NavigationDrawer Activity,菜单项看起来没问题,但
当我编写 mNavigationView.setNavigationItemSelectedListener(this); 时,应用程序崩溃在代码中如果未添加,则会删除导航栏中该项目的功能。我应该在后
我正在为一个包含抽屉的工程设计项目开发 Android 应用。我的一位小组成员选择使用 android.support.design.widget.NavigationView API 来执行此操作,
我正在使用 ActionBarSherlock 来显示微调器: ActionBar bar = getSupportActionBar(); bar.setNavigationMode(ActionB
所以我在 StackOverFlow 上浏览了很多答案,但无法正常工作。我想在抽屉导航项目点击时切换 fragment 。我在 Android Studio 1.5 中使用默认的抽屉导航。 我关注了t
请有人帮我处理抽屉导航中的 fragment ,出于某种原因我无法让它们工作,但所有代码看起来都正确。 Here是源代码的链接。 最佳答案 使用这段代码: navigationView = (Navi
我有一个包含 3 个菜单项的抽屉导航。在我的 MainActivity.java 中,我设置了 onNavigationItemSelected() 监听器来处理单击的导航项。单击时,将显示一个自定义
我正在使用 Google+ 登录,这会导致 Navigation.activity。我已经按照 Google 开发人员的说明进行操作,但我只采用了登录方法(成功),但现在我卡在了 navigation
我想在应用程序启动时选择抽屉导航中的特定项目。我在 visual studio 默认模板中添加了 navigationView.SetCheckedItem(Resource.Id.nav_galle
我在 Kotlin 中制作了抽屉菜单,我想使用这个菜单项。在 java 中,我调用了 onNavigationItemSelected 方法,但是当我想在 Kotlin 中使用它时,它没有出现。这是我
我有一个 BottomNavigationView在我与 onNavigationItemSelected 的 Activity 中听众。 我有两个问题: 是否 setSelectedItemId方法
我有一个 ViewPager 托管在一个 fragment 中,该 fragment 托管两个 ListFragments,这两个 ListFragments 由从 SQLite 查询返回的 Curs
我想在下面的 Activity 中的操作栏中使用微调器是 onCreateOptionsMenu:我使用 this tutorial实现这种方法。我的问题是当 Activity 是午餐时,onNavi
我将 ActionBar 与下拉菜单一起使用,onNavigationItemSelected() 在 Activity 创建后立即被调用,因此第一个项目被调用。我的下拉菜单的第一项是主页,与使用 a
我在 DrawerLayout 中使用 NavigationView,我不确定我是否忘记了什么,但只是在我单击它时隐藏了 Navigation。 这是我的代码: 主要 Activity .java:
我已经实现了选项卡 View 以及水平滑动 View (以更改选项卡),导航模式作为应用程序的列表。我正在使用 ActionBarSherlock 和 TabPageIndicator。更改标签后,我
我从 Android Studio 3.5 模板创建了一个新的抽屉导航 Activity ,但即使我正在监听 NavigationItemSelected,菜单项也无法单击。 public class
我是一名优秀的程序员,十分优秀!