2016-06-17 1 views
-1

Je ne peux pas modifier le fragment lorsque je clique dans l'élément de navigation. Cela n'arrive que dans mon FragmentTwo. La validation entraîne une erreur et l'application est proche. S'il vous plaît, quelqu'un peut m'aider? Où est l'erreur?Modification des fragments avec le tiroir de navigation Erreur

CODE PRINCIPAL

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

    // Implementação do navigation view 
    DrawerLayout drawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout); 
    toggle = new ActionBarDrawerToggle(this, drawerLayout, R.string.open, R.string.close); 
    drawerLayout.addDrawerListener(toggle); 
    toggle.syncState(); 
    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
    NavigationView navigationView = (NavigationView) findViewById(R.id.navigationView); 
    navigationView.setNavigationItemSelectedListener(this); 

    if(savedInstanceState == null) { 
     FragmentOne frag1 = new FragmentOne(); 
     FragmentTwo frag2 = new FragmentTwo(); 

     FragmentTransaction ft = fm.beginTransaction(); 
     ft.add(R.id.layoutFundo, frag1, "frag1"); 
     ft.commit(); 
    } 
} 


@Override 
public boolean onOptionsItemSelected(MenuItem item) { 

    if(toggle.onOptionsItemSelected(item)) 
     return true; 
    return super.onOptionsItemSelected(item); 
} 

@Override 
public boolean onNavigationItemSelected(MenuItem item) { 
    FragmentOne frag1 = new FragmentOne(); 
    FragmentTwo frag2 = new FragmentTwo(); 
    FragmentTransaction ft = fm.beginTransaction(); 
    if (item.getItemId() == R.id.nav_menu_1) { 
     ft.replace(R.id.layoutFundo, frag1, "frag1"); 
     ft.addToBackStack("pilha"); 
     showMessage("IF", "Entrou no if"); 
     Toast.makeText(InicioAdmin.this, "Novo", Toast.LENGTH_SHORT).show(); 
    } else if (item.getItemId() == R.id.nav_menu_2) { 

     ft.replace(R.id.layoutFundo, frag2, "frag2"); 
     ft.addToBackStack("pilha"); 
     showMessage("ELSEIF", "Entrou no Elseif"); 
     Toast.makeText(InicioAdmin.this, "Outro", Toast.LENGTH_SHORT).show(); 
    } else { 

     ft.replace(R.id.layoutFundo, frag1, "frag1"); 
     ft.addToBackStack("pilha"); 
     showMessage("ELSE", "Entrou no else"); 
    } 
    ft.commit(); 

    /* switch (item.getItemId()) { 

     case R.id.nav_menu_1: 

      break; 
     case R.id.nav_menu_2: 

      break; 
     default: 

      break; 


    }*/ 

    DrawerLayout dl = (DrawerLayout) findViewById(R.id.drawerLayout); 
    if (dl.isDrawerOpen(GravityCompat.START)) 
     dl.closeDrawer(GravityCompat.START); 


    return false; 
} 

// Método showMessage 
public void showMessage (String title, String message) 
{ 
    AlertDialog.Builder builder=new AlertDialog.Builder(this); 
    builder.setCancelable(true); 
    builder.setTitle(title); 
    builder.setMessage(message); 
    builder.show(); 
} 

FRAGMENT UN CODE

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ 
    View view = inflater.inflate(R.layout.fragment_one, null); 

    TextView tv = (TextView) view.findViewById(R.id.textView1); 
    tv.setText("Fragmento 1"); 

    return (view); 
} 

FRAGMENT DEUX CODE

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ 
    /* 
    View view = inflater.inflate(R.layout.fragment_two, null); 

    TextView tv = (TextView) view.findViewById(R.id.textView1); 
    tv.setText("Fragmento 2"); 
    */ 
    return (null); 
} 

Les deux classes s'étend Fragment

+0

Vous ne pouvez pas retourner 'null' à partir de' onCreateView() '. –

Répondre

0

Je pense que vous retournerez null i n fragment c'est pourquoi vous obtenez une erreur. s'il vous plaît ajouter la vue dans le fragment et exécutez ceci. J'espère que cela aidera.