簡體   English   中英

導航抽屜更改片段時的應用程序記錄

[英]Application legging when fragment changed by Navigation Drawer

新的支持庫提供了導航抽屜

這是代碼

 FragmentManager fragmentManager;
Fragment fragment;
 fragmentManager=getSupportFragmentManager();
    fragment= fragmentManager.findFragmentById(R.id.list_view_container);



 NavigationView navigationView = (NavigationView) findViewById(R.id.navigation_view);
 if (navigationView != null) {
        setupNavigationDrawerContent(navigationView);
    }
    setupNavigationDrawerContent(navigationView);




private void setupNavigationDrawerContent(NavigationView navigationView) {
    navigationView.setNavigationItemSelectedListener(
            new NavigationView.OnNavigationItemSelectedListener() {
                @Override
                public boolean onNavigationItemSelected(MenuItem menuItem) {
                    switch (menuItem.getItemId()) {
                        case R.id.home:
                            menuItem.setChecked(true);
                            drawerLayout.closeDrawer(GravityCompat.START);
                            fragment = new HomeFragment();
       fragmentManager.beginTransaction().replace(R.id.list_view_container,fragment).commit();
                            return true;
                        case R.id.current_event:
                            menuItem.setChecked(true);
                            drawerLayout.closeDrawer(GravityCompat.START);
                            return true;
                        case R.id.college_events:
                            menuItem.setChecked(true);
                            drawerLayout.closeDrawer(GravityCompat.START);
                            return true;
                        case R.id.national_events:
                            menuItem.setChecked(true);
                            drawerLayout.closeDrawer(GravityCompat.START);
                            return true;
                        case R.id.workshops:
                            menuItem.setChecked(true);
                            drawerLayout.closeDrawer(GravityCompat.START);
                            return true;
                        case R.id.trainings:
                            menuItem.setChecked(true);
                            Toast.makeText(MainActivity.this, "Launching " + menuItem.getTitle().toString(), Toast.LENGTH_SHORT).show();
                            drawerLayout.closeDrawer(GravityCompat.START);
                            return true;
                        case R.id.companies:
                            menuItem.setChecked(true);
                            Toast.makeText(MainActivity.this, menuItem.getTitle().toString(), Toast.LENGTH_SHORT).show();
                            drawerLayout.closeDrawer(GravityCompat.START);
                            return true;
                        case R.id.talents:
                            menuItem.setChecked(true);
                            Toast.makeText(MainActivity.this, menuItem.getTitle().toString(), Toast.LENGTH_SHORT).show();
                            drawerLayout.closeDrawer(GravityCompat.START);
                            return true;
                        case R.id.games:
                            menuItem.setChecked(true);
                            Toast.makeText(MainActivity.this, menuItem.getTitle().toString(), Toast.LENGTH_SHORT).show();
                            drawerLayout.closeDrawer(GravityCompat.START);
                            return true;
                    case R.id.submission:
                            menuItem.setChecked(true);
                            Toast.makeText(MainActivity.this, menuItem.getTitle().toString(), Toast.LENGTH_SHORT).show();
                            drawerLayout.closeDrawer(GravityCompat.START);
                            return true;
                    case R.id.about:
                            menuItem.setChecked(true);
                            Toast.makeText(MainActivity.this, menuItem.getTitle().toString(), Toast.LENGTH_SHORT).show();
                            drawerLayout.closeDrawer(GravityCompat.START);
                            return true;
                }
                    return true;
                }
            });
}

因此,當我單擊HOME ,片段正在更改,但關閉時導航抽屜綁扎,並且當向后拉導航抽屜時,在比jellyBean大的設備中,運行過程像地獄一樣掛了,但是在果凍豆和pre果凍豆設備。 我的應用程序是使用最新的api編譯的,它是23,請幫幫我。

因此,當我刪除片段更改代碼時,根本不要打腿。 所以我認為片段更改代碼出了點問題。

您的問題來自主線程上的圖像繪制。 關閉抽屜與創建要顯示的片段的時間相同。 如果有任何操作導致UI線程凍結,則抽屜將停止移動,這非常明顯。

任何大型操作都必須在后台線程中完成。 http://developer.android.com/training/displaying-bitmaps/process-bitmap.html

每次單擊NavigationView項時,我都使用add()方法來更改片段,而不是replace() ,它用於在每次單擊時向活動添加一個新片段。 好吧,我剛接觸android應用程序開發時就問了這個問題。

暫無
暫無

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

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