2016-11-23 46 views
0

我正在创建一个具有抽屉一个MainActivity和多个片段的应用程序,其中一个片段将所有按钮保存到其他片段(不包括它的自我),这样既buttonsFragment和抽屉可以调用片段现在的问题是,即时通讯创建每个片段的两个副本,当我把它从抽屉中,当我把它从buttonsFragment使用按钮和菜单项调用相同的片段(不在backStack中创建重复项)

我的代码:

MainActivity()

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

    int id = item.getItemId(); 
    xFragment xFrag = new xfragment(); 

    if (id == R.id.menuItem1) { 

     FragmentManager manager = getSupportFragmentManager(); 
     android.support.v4.app.FragmentTransaction fM =  manager.beginTransaction(); 

     boolean moneyFragmentPoppedMenu = manager.popBackStackImmediate(xFragName,0); 




     if(!FragmentPoppedMenu){ 

      fM.replace(R.id.content_main, xfrag, mT); 
      fM.addToBackStack(mFragName); 
      fM.commit(); 
     } 

     else if (FragmentPoppedMenu){ 

     fM.replace(R.id.content_main, xfrag);} 


    } 

buttonsFragment()

xFragButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      FragmentManager manager = getActivity().getSupportFragmentManager(); 

      android.support.v4.app.FragmentTransaction fM = manager.beginTransaction(); 
      boolean FragmentPoppedButton = manager.popBackStackImmediate(xFragName, 0); 


      if(!FragmentPoppedButton){ 
       fM.replace(R.id.content_main, xfrag); 
       fM.addToBackStack(xFragName); 
       fM.commit(); 
      } 

     else if (FragmentPoppedButton){ fM.replace(R.id.content_main, xfrag);} 

我发现了,因为当我从菜单中打开并输入一个EDITTEXT东西再从buttonsFragment打开它显示了一个明确的EDITTEXT然后当我从菜单中我所输入的再次打开仍然存在

回答

0
@SuppressWarnings("StatementWithEmptyBody") 
@Override 
public boolean onNavigationItemSelected(MenuItem item) { 
// Handle navigation view item clicks here. 

int id = item.getItemId(); 
xFragment xFrag = new xfragment(); 

if (id == R.id.menuItem1) { 
     xFragButton.performClick(); 

} 

buttonsFragment:

onCreateView(){

Button xFragButton = (Button) v.findViewById(R.id.Button1); 

xFragButton.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     FragmentManager manager = getSupportFragmentManager(); 
    android.support.v4.app.FragmentTransaction fM =  manager.beginTransaction(); 

    boolean moneyFragmentPoppedMenu = manager.popBackStackImmediate(xFragName,0); 




    if(!FragmentPoppedMenu){ 

     fM.replace(R.id.content_main, xfrag, mT); 
     fM.addToBackStack(mFragName); 
     fM.commit(); 
    } 

    else if (FragmentPoppedMenu){ 

    fM.replace(R.id.content_main, xfrag); 
    } 
+0

java.lang.RuntimeException:无法实例化活动ComponentInfo {com.example.bader.myapplication/com.example.b.myapplication.MainActivity}:java.lang.NullPointerException:试图调用虚拟方法'android.view.Window $回调android.view.Window.getCallback()'空对象引用 – Redab0

+0

你在哪里有这个xFragButton按钮?请确保它不为null。 –

+0

绑定xFragButton到它的view.or其他张贴在这里您onCreateView()代码 –

相关问题