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
Vous ne pouvez pas retourner 'null' à partir de' onCreateView() '. –