2017-05-11 12 views
0

This is my gif of problem。私はナビゲーション・ドロワーを使用していますが、以下のようにいくつかのコードを実行していますが、ペインを閉じて開いていても滑らかさが必要です。ナビゲーションドロワー開いているウィンドウが滑らかに機能しない

これは私のコードです:

public class SettingFlyout extends AppCompatActivity 
     implements NavigationView.OnNavigationItemSelectedListener { 


    SharedPreferences pref; 
    SharedPreferences.Editor editor; 

    public DrawerLayout drawer; 
    public ActionBarDrawerToggle toggle; 
    public NavigationView navigationView; 
    LinearLayout viewPager; 
    int roleId; 

    FragmentStack fragmentStack = FragmentStack.getInstance(); 

    @Override 
    public void onPanelClosed(int featureId, Menu menu) { 
     super.onPanelClosed(featureId, menu); 
    } 

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

     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     TextView credits, num_credits, ttlscore, num_ttlscore, tutorNow; 

     final Typeface typeface = Typeface.createFromAsset(getAssets(), "fonts/GothamBookRegular.ttf"); 

     View v = getLayoutInflater().inflate(R.layout.student_actionbar_view, null); 
     credits = (TextView) v.findViewById(R.id.credits); 
     credits.setTypeface(typeface); 


     viewPager = (LinearLayout) findViewById(R.id.viewpager); 

     Intent i = getIntent(); 
     i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     int status = i.getIntExtra("status", 1); 
     String username = i.getStringExtra("username"); 


     navigationView = (NavigationView) findViewById(R.id.nav_view); 
     navigationView.setNavigationItemSelectedListener(this); 
     navigationView.setItemIconTintList(null); 

     View view = navigationView.getHeaderView(0); 
     TextView TVuserName = (TextView) view.findViewById(R.id.personTextsettingflyout); 
     TVuserName.setText(username); 

     if (status == 0) { 

      roleId = Integer.parseInt(i.getStringExtra("roleId")); 
     } 


     drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     toggle = new ActionBarDrawerToggle(
       this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
     drawer.setDrawerListener(toggle); 
     toggle.syncState(); 


     Tablayout_with_viewpager withViewpager = new Tablayout_with_viewpager(status, roleId); 
     FragmentManager fragmentManager = getSupportFragmentManager(); 
     FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
     fragmentTransaction.addToBackStack(null); 
     fragmentTransaction.replace(R.id.viewpager, withViewpager); 
     fragmentTransaction.commit(); 


    } 


    @Override 
    public void onBackPressed() { 
     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 

     FragmentManager fragmentManager = getSupportFragmentManager(); 
     if (drawer.isDrawerOpen(GravityCompat.START)) { 
      drawer.closeDrawer(GravityCompat.START); 
     } else 

      if (fragmentStack.size()==0) { 
       super.onBackPressed(); 
       finish(); 
       moveTaskToBack(true); 
      } else if (fragmentStack.size()>0) { 

       if (fragmentStack.size()<2 || fragmentStack.size()==2 || fragmentStack.isEmpty()){ 
        super.onBackPressed(); 
        finish(); 
        moveTaskToBack(true); 
        SplashScreen splashScreen=new SplashScreen(); 
        splashScreen.onBackPressed(); 
       } else { 
         Fragment fragment = fragmentStack.pop(); 
    if (fragment.getClass().equals("")) 
        Toast.makeText(getApplicationContext(), fragment.getClass().toString(), Toast.LENGTH_SHORT).show(); 
        Toast.makeText(getApplicationContext(), String.valueOf(fragmentStack.size()), Toast.LENGTH_SHORT).show(); 

        FragmentTransaction ft = fragmentManager.beginTransaction(); 
        ft.replace(R.id.viewpager, fragment).commit(); 
       } 
      } 
    } 



    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 

     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 

     int id = item.getItemId(); 
     return super.onOptionsItemSelected(item); 
    } 


    @SuppressWarnings("StatementWithEmptyBody") 
    @Override 
    public boolean onNavigationItemSelected(MenuItem item) { 
     // Handle navigation view item clicks here. 
     int id = item.getItemId(); 


     FragmentManager fragmentManager = getSupportFragmentManager(); 
     FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 


     Fragment fragment; 
     if (id == R.id.profile) { 
      Tablayout_with_viewpager tablayout_with_viewpager = new Tablayout_with_viewpager(); 
      fragmentTransaction.replace(R.id.viewpager, tablayout_with_viewpager).commit(); 
      // Handle the camera action 
     } else if (id == R.id.desired_tutor) { 

      DesiredTutor desiredTutor = new DesiredTutor(); 
      fragmentTransaction.replace(R.id.viewpager, desiredTutor).commit(); 

     } else if (id == R.id.payment_options) { 
      BuyCredits buyCredits=new BuyCredits(); 
      fragmentTransaction.replace(R.id.viewpager, buyCredits).commit(); 

     } else if (id == R.id.lesson_tracking) { 
      lessonTracking lessonTracking=new lessonTracking(); 
      fragmentTransaction.replace(R.id.viewpager, lessonTracking).commit(); 

     } else if (id == R.id.TTL_Score) { 
      TTL_Score ttl_score = new TTL_Score(); 
      fragmentTransaction.replace(R.id.viewpager, ttl_score).commit(); 

     } else if (id == R.id.History) { 
      History history = new History(); 
      fragmentTransaction.replace(R.id.viewpager, history).commit(); 

     } else if (id == R.id.notification) { 
      Notification notification = new Notification(); 
      fragmentTransaction.replace(R.id.viewpager, notification).commit(); 

     } else if (id == R.id.support) { 
      Support support = new Support(); 
      fragmentTransaction.replace(R.id.viewpager, support).commit(); 

     } else if (id == R.id.sign_out) { 

      pref=getSharedPreferences("loginStatus", Context.MODE_PRIVATE); 
      editor=pref.edit(); 
      editor.clear(); 
      editor.apply(); 

      Intent i = new Intent(getApplicationContext(), Login.class); 
      i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
      startActivity(i); 
      finish(); 

     } 
     else if (id== R.id.daily_game){ 
      TutorGuides dailyGame= new TutorGuides(); 
      fragmentTransaction.replace(R.id.viewpager, dailyGame).commit(); 

     } 

     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     drawer.closeDrawer(GravityCompat.START); 
     return true; 
    } 
} 

は、私はそれがよりスムーズにするために何をすべきでしょうか?

答えて

0

このコードを使用するたびに、それはすべての時間が時間後で定義し、このコードを使用する必要はありません: -

fragmentTransaction.replace(R.id.viewpager, desiredTutor).commit(); 

メソッドを作成します。 : -

public static void showFragment(Fragment fragment, String Tag) { 
    FragmentManager manager = activity.getSupportFragmentManager(); 
    FragmentTransaction transcation = manager.beginTransaction(); 
    transcation.replace(R.id.viewpager, fragment, Tag); 
    transcation.addToBackStack(Tag); 
    transcation.commit(); 

} 

とは、これを使用する: -

switch (item.getItemId()) 
    { 
    case R.id.desired_tutor: 
    showFragment(new DesiredTutor(), ""); 
    break; 
    case R.id.payment_options: 
    showFragment(new BuyCredits(), ""); 
    break; 
    } 
+0

ありがとうございました。 –

0
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    drawer.closeDrawer(GravityCompat.START); 

あなたは毎回それを開始しています。それは間違っています。それを一度初期化し、そのオブジェクトを使用してドロワを開閉します。アイテムを選択したリスナーからそのコードを削除し、それをOncreateに入れて一度初期化します。それは完璧にするコードの下

用途:

@Override 
    protected void onPostCreate(Bundle savedInstanceState) { 
     super.onPostCreate(savedInstanceState); 
     toggle.syncState(); 
    } 


ActionBarDrawerToggle toggle; 

toggle = new ActionBarDrawerToggle(this, mDrawerLayout, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close) { 
       @Override 
       public void onDrawerOpened(View drawerView) { 
        super.onDrawerOpened(drawerView); 
        invalidateOptionsMenu(); 
       } 

       @Override 
       public void onDrawerClosed(View drawerView) { 
        super.onDrawerClosed(drawerView); 
        invalidateOptionsMenu(); 
       } 
      }; 


mDrawerLayout.setDrawerListener(toggle); 
+0

ありがとうございました...私はあなたの提案に応じてコードを実行しましたが、私は引き出しオブジェクトを使って開いたり閉じたりすることができますか? –

+0

Upvoteがあなたを助けたら。 –

+0

申し訳ありませんが、それでもまだ滑らかではありません。 –

関連する問題