簡體   English   中英

無法從導航抽屜菜單項加載片段

[英]Unable to load fragments from the navigation drawer menu item

嗨,我是一名學生,正在嘗試構建一個應用程序。 我想通過在導航抽屜上點擊進入主要活動來加載片段。 我能夠將導航抽屜附加到家庭活動中。 但是使用以下代碼,我無法在活動中加載片段。 “ loadDashboard”功能工作正常,但“ onNavigationItemSelected”方法無效。 請幫助...代碼在下面...

public class HomeActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);
    loadDashboad();

    NavigationView nv = findViewById(R.id.navigation_view);
    nv.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {
            switch (item.getItemId()) {
                case R.id.menuitemdashboard:
                    getSupportFragmentManager().beginTransaction().replace(R.id.viewContainer, new dashboard()).commit();
                    break;
                case R.id.menuitemlogout:
                    break;
                case R.id.menuitemprofile:
                    break;
                case R.id.menuitemreports:
                    break;
                case R.id.menuitemvisits:
                    getSupportFragmentManager().beginTransaction().replace(R.id.viewContainer, new visits()).commit();
                    break;
            }
            return true;
        }
    });

}

private void loadDashboad() {
    FragmentManager fm = getSupportFragmentManager();
    FragmentTransaction ft = fm.beginTransaction();
    dashboard dash = new dashboard();
    ft.add(R.id.viewContainer, dash);
    ft.commit();
}

}

您的代碼很好,您所缺少的是為導航菜單項提供功能。 將以下行替換為要添加的片段

FragmentManager fm = getSupportFragmentManager();
switch (item.getItemId()) {
    case R.id.menuitemdashboard:
        fm.beginTransaction().replace(R.id.viewContainer, new dashboard()).commit();
        break;
    case R.id.menuitemlogout:
        //TODO replace logout with fragment
        fm.beginTransaction().replace(R.id.viewContainer, //*log out*/).commit();
        break;
    case R.id.menuitemprofile:
        //TODO replace profile with fragment
        fm.beginTransaction().replace(R.id.viewContainer, //*profile*/).commit();
        break;
    case R.id.menuitemreports:
        //TODO replace reports with fragment
        fm.beginTransaction().replace(R.id.viewContainer, //*reports*/).commit();
        break;
    case R.id.menuitemvisits:
        fmbeginTransaction().replace(R.id.viewContainer, new visits()).commit();
        break;
}

暫無
暫無

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

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