2016-06-17 16 views
-1

ナビゲーション・アイテムをクリックするとフラグメントを変更できません。それは私のFragmentTwoでのみ起こります。コミットによってエラーが発生し、アプリケーションは終了しています。どうか、誰かが私を助けることができますか?エラーはどこですか?ナビゲーション・ドロワーでフラグメントを変更するエラー

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 2つのコード

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

2つのクラスが、私はあなたが私nullを返していると思うフラグメント

+0

onCreateView()からヌルを返すことはできません。 –

答えて

0

を拡張しますあなたが間違っている理由です。フラグメントをビューに追加して実行してください。それが助けてくれることを願う

関連する問題