Android 对选定的导航抽屉项目执行按钮单击事件
Android perform button click event on navigation drawer item selected
我正在为我的应用程序使用 Android material 抽屉式导航,并尝试创建一个注销按钮作为抽屉式导航项之一
@Override
public void onNavigationDrawerItemSelected(int position) {
// update the main content by replacing fragments
// Toast.makeText(this, "Menu item selected -> " + position, Toast.LENGTH_SHORT).show();
Fragment fragment = null;
switch (position) {
case 0:
fragment = new AnotherFragment();
break;
case 1:
fragment = new AnotherFragment();
break;
case 2:
fragment = new AnotherFragment();
break;
case 3:
fragment = new AnotherFragment();
break;
case 4:
fragment = new AnotherFragment();
break;
case 5:
fragment = new AnotherFragment();
break;
case 6:
fragment = new AnotherFragment;
break;
case 7:
fragment = new AnotherFragment();
break;
case 8:
fragment = new AnotherFragment();
break;
case 9:
break;
default:
break;
}
if (fragment != null)
{
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.container, fragment).commit();
}
在案例 9 中我想允许用户注销,
Intent logOut = new Intent(GroupHomeActivity.this, LoginActivity.class);
getSharedPreferences("Pref", Context.MODE_PRIVATE).edit().clear().commit();
logOut.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
如何让上述代码在案例 9 上执行?
好吧,我认为你应该这样做:
Fragment fragment = null;
switch (position) {
case 0:
fragment = new AnotherFragment();
break;
case 1:
fragment = new AnotherFragment();
break;
case 2:
fragment = new AnotherFragment();
break;
case 3:
fragment = new AnotherFragment();
break;
case 4:
fragment = new AnotherFragment();
break;
case 5:
fragment = new AnotherFragment();
break;
case 6:
fragment = new AnotherFragment;
break;
case 7:
fragment = new AnotherFragment();
break;
case 8:
fragment = new AnotherFragment();
break;
case 9:
fragment=null;
break;
default:
break;
}
if (fragment != null)
{
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.container, fragment).commit();
}
else {
Intent logOut = new Intent(GroupHomeActivity.this, ElgarLoginActivity.class);
getSharedPreferences("Pref", Context.MODE_PRIVATE).edit().clear().commit();
logOut.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
}
只是因为 return 类型需要一个非空片段。好吧,只是 return 一个空片段,然后在空片段上注销用户。
以下是我将如何处理位置 9 点击的逻辑
@Override
public void onNavigationDrawerItemSelected(int position) {
if(position == 9){
Intent logOut = new Intent(GroupHomeActivity.this, ElgarLoginActivity.class);
getSharedPreferences("Pref", Context.MODE_PRIVATE).edit().clear().commit();
logOut.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
}else{
switchFragment(position);
}
}
这是切换片段的方法。
private void switchFragment(int position){
Fragment fragment = null;
switch (position) {
case 0:
fragment = new AnotherFragment();
break;
case 1:
fragment = new AnotherFragment();
break;
case 2:
fragment = new AnotherFragment();
break;
case 3:
fragment = new AnotherFragment();
break;
case 4:
fragment = new AnotherFragment();
break;
case 5:
fragment = new AnotherFragment();
break;
case 6:
fragment = new AnotherFragment;
break;
case 7:
fragment = new AnotherFragment();
break;
case 8:
fragment = new AnotherFragment();
break;
default:
break;
}
if (fragment != null){
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.container, fragment).commit();
}
}
只要在 break 之前把你的代码放在 case 9 之后。像这样:
Case 9:
Intent logOut = new Intent(GroupHomeActivity.this, ElgarLoginActivity.class);
getSharedPreferences("Pref", Context.MODE_PRIVATE).edit().clear().commit(); logOut.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
StartActivity(logout);
break;
我正在为我的应用程序使用 Android material 抽屉式导航,并尝试创建一个注销按钮作为抽屉式导航项之一
@Override
public void onNavigationDrawerItemSelected(int position) {
// update the main content by replacing fragments
// Toast.makeText(this, "Menu item selected -> " + position, Toast.LENGTH_SHORT).show();
Fragment fragment = null;
switch (position) {
case 0:
fragment = new AnotherFragment();
break;
case 1:
fragment = new AnotherFragment();
break;
case 2:
fragment = new AnotherFragment();
break;
case 3:
fragment = new AnotherFragment();
break;
case 4:
fragment = new AnotherFragment();
break;
case 5:
fragment = new AnotherFragment();
break;
case 6:
fragment = new AnotherFragment;
break;
case 7:
fragment = new AnotherFragment();
break;
case 8:
fragment = new AnotherFragment();
break;
case 9:
break;
default:
break;
}
if (fragment != null)
{
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.container, fragment).commit();
}
在案例 9 中我想允许用户注销,
Intent logOut = new Intent(GroupHomeActivity.this, LoginActivity.class);
getSharedPreferences("Pref", Context.MODE_PRIVATE).edit().clear().commit();
logOut.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
如何让上述代码在案例 9 上执行?
好吧,我认为你应该这样做:
Fragment fragment = null;
switch (position) {
case 0:
fragment = new AnotherFragment();
break;
case 1:
fragment = new AnotherFragment();
break;
case 2:
fragment = new AnotherFragment();
break;
case 3:
fragment = new AnotherFragment();
break;
case 4:
fragment = new AnotherFragment();
break;
case 5:
fragment = new AnotherFragment();
break;
case 6:
fragment = new AnotherFragment;
break;
case 7:
fragment = new AnotherFragment();
break;
case 8:
fragment = new AnotherFragment();
break;
case 9:
fragment=null;
break;
default:
break;
}
if (fragment != null)
{
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.container, fragment).commit();
}
else {
Intent logOut = new Intent(GroupHomeActivity.this, ElgarLoginActivity.class);
getSharedPreferences("Pref", Context.MODE_PRIVATE).edit().clear().commit();
logOut.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
}
只是因为 return 类型需要一个非空片段。好吧,只是 return 一个空片段,然后在空片段上注销用户。
以下是我将如何处理位置 9 点击的逻辑
@Override
public void onNavigationDrawerItemSelected(int position) {
if(position == 9){
Intent logOut = new Intent(GroupHomeActivity.this, ElgarLoginActivity.class);
getSharedPreferences("Pref", Context.MODE_PRIVATE).edit().clear().commit();
logOut.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
}else{
switchFragment(position);
}
}
这是切换片段的方法。
private void switchFragment(int position){
Fragment fragment = null;
switch (position) {
case 0:
fragment = new AnotherFragment();
break;
case 1:
fragment = new AnotherFragment();
break;
case 2:
fragment = new AnotherFragment();
break;
case 3:
fragment = new AnotherFragment();
break;
case 4:
fragment = new AnotherFragment();
break;
case 5:
fragment = new AnotherFragment();
break;
case 6:
fragment = new AnotherFragment;
break;
case 7:
fragment = new AnotherFragment();
break;
case 8:
fragment = new AnotherFragment();
break;
default:
break;
}
if (fragment != null){
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.container, fragment).commit();
}
}
只要在 break 之前把你的代码放在 case 9 之后。像这样:
Case 9:
Intent logOut = new Intent(GroupHomeActivity.this, ElgarLoginActivity.class);
getSharedPreferences("Pref", Context.MODE_PRIVATE).edit().clear().commit(); logOut.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
StartActivity(logout);
break;