簡體   English   中英

Android在導航抽屜項上執行按鈕單擊事件

[英]Android perform button click event on navigation drawer item selected

我正在為我的應用程序使用Android材質的導航抽屜,並嘗試創建一個注銷按鈕作為導航抽屜項之一

@Override
public void onNavigationDrawerItemSelected(int position) {
    // update the main content by replacing fragments

// Toast.makeText(this,“所選菜單項->” +位置,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);

   }

僅僅因為返回類型期望一個非null的片段。 只需返回一個空片段,然后在用戶注銷時退出。

這是我如何處理位置9 click的邏輯

@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();
    } 
}

只需在中斷之前將代碼放在案例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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM