-1

I don't can change the fragment when i click in navigation item. It happens only in my FragmentTwo. The commit results an error and the app is close. Please, someone can help me? Where is the error?

MAIN CODE

@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 ONE 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 TWO 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);
}

The two classes extends Fragment

mahenrocha
  • 11
  • 2

1 Answers1

0

I think you are returning null in fragment that's why you are getting error. please add view in fragment and run this. hope it will help.

aj0822ArpitJoshi
  • 1,142
  • 1
  • 9
  • 25