2017-05-11 2 views
0

This is my gif of problem. Ich benutze die Navigationsleiste, und ich habe Code wie unten beschrieben ausgeführt, aber das Fenster schließen und öffnen funktioniert nicht mit erforderlicher Glätte.Navigationsschublade geöffnet Fenster schließen funktioniert nicht mit Glätte

Dies ist mein Code:

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; 
    } 
} 

was soll ich tun es glatter machen?

Antwort

0

Jedes Mal, diesen Code verwendet es nicht jedes Mal diesen Code definieren einmal eine Zeit verwenden müssen: -

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

Erstellen Sie eine Methode : -

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

} 

und verwenden Sie diese: -

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

Danke Mann ... es bekommt etwas was glatter dann .... –

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

Sie beginnen es jedes Mal. Es ist falsch. Initialisieren Sie es einfach einmal und verwenden Sie dieses Objekt, um die Schublade zu öffnen und zu schließen. entferne diesen Code vom ausgewählten Listener und lege ihn in Oncreate, um ihn einmal zu initialisieren.

Verwenden Sie den folgenden Code, um es perfekt zu machen:

@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

Vielen Dank Mann ... Ich habe den Code nach Ihrem Vorschlag gemacht, aber wie kann ich öffnen und schließen Ereignis mit Schublade Objekt ??? –

+0

Upvote, wenn es dir geholfen hat. –

+0

Entschuldigung Mann aber immer noch bewegt es sich nicht mit dieser Glätte .... –

Verwandte Themen