2017-04-27 85 views
0

我的问题是我使用了带有多个片段的NavigationDrawer。我有一个活动。我正在尝试从活动返回到Specific Fragment。我试图发送一个意图。它可以工作,但由于bundle的值不是null,它总是停留在该片段中。所以,如果你有办法如何让这个包无效,或者你有更好的解决方案,那么我会很感激。谢谢,所有。如何从活动导航到NavigationDrawer中的特定片段

这种方法可以切换片段

public void DisplaySelectedScreen(int id) { 

     infoNom = this.getIntent().getExtras(); 
     if (infoNom != null) { 
      id = Integer.valueOf(infoNom.getString("Fragment")); 
     } 

     infoNom = null ; //not Working 

     Fragment fragment = null; 

     switch (id) { 
      case R.id.nav_home: 
       fragment = new Home(); 
       break; 
      case R.id.nav_info: 
       fragment = new Informations(); 
       break; 
      case R.id.nav_cmd: 
       fragment = new Commandes(); 
       break; 
      case R.id.nav_panier: 
       fragment = new Cart(); 
       break; 
      case R.id.nav_contact: 
       fragment = new Contact(); 
       break; 
      case R.id.nav_about_us: 
       fragment = new About_Us(); 
       break; 
      case R.id.nav_logout: 
       ParseUser.logOut(); 
       Intent intent = new Intent(Main.this, Welcome.class); 
       startActivity(intent); 
       break; 

     } 

     if (fragment != null) { 
      FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
      ft.replace(R.id.content_frame, fragment); 
      ft.commit(); 
     } 
     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     drawer.closeDrawer(GravityCompat.START); 

    } 
+0

你试过this.getIntent()。setExtras(null)? –

+0

有没有setExtras()方法!! – Khalil

+0

当你在意图设置捆绑你是否通过任何关键像intent.putExtra(“钥匙”,捆绑) –

回答

1

您可以使用以下方法清除包:

getIntent().removeExtra("key"); 

希望能帮助你!

+0

它的作品非常感谢你Broo! – Khalil

0

方法从意图取代额外

无效removeExtra(字符串名称) 删除扩展数据。

void removeFlags(int flags) 从意图中删除这些标志。

意图replaceExtras(意图src) 完全使用给定意图中的附加内容替换意向中的附加项。

意图replaceExtras(Bundle extras) 用给定的额外套件完全替换意图中的附加项。

希望这会有帮助