2017-01-15 18 views
0

我使用Android Studio創建了activity,但是我不知道如何在啓動活動時設置fragment class。每當我開始activity我得到一個空白屏幕。這意味着主屏幕不是fragment class屏幕。如何在Android中爲新的導航抽屜設置基本活動?

代碼如下:

public class Dashboard extends AppCompatActivity 
     implements NavigationView.OnNavigationItemSelectedListener { 

    ActionBarDrawerToggle toggle; 
    DrawerLayout drawer; 
    NavigationView navigationView; 
    FloatingActionButton fab; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_dashboard); 


     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     fab = (FloatingActionButton) findViewById(R.id.fab); 
     fab.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
         .setAction("Action", null).show(); 
      } 
     }); 

     drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     toggle = new ActionBarDrawerToggle(
       this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
     drawer.setDrawerListener(toggle); 
     toggle.syncState(); 

     navigationView = (NavigationView) findViewById(R.id.nav_view); 
     //navigationView.setNavigationItemSelectedListener(this); 



    } 

    @Override 
    public void onBackPressed() { 
     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     if (drawer.isDrawerOpen(GravityCompat.START)) { 
      drawer.closeDrawer(GravityCompat.START); 
     } else { 
      super.onBackPressed(); 
     } 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.dashboard, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 

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


     selectDrawerItem(item); 

     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     drawer.closeDrawer(GravityCompat.START); 
     return true; 
    } 



    private void selectDrawerItem(MenuItem menuItem) { 

     Fragment fragment = null; 
     Class fragmentClass; 
     switch(menuItem.getItemId()) { 
      case R.id.nav_dashboard: 
       fragmentClass = DashboardFragment.class; 
       break; 
      case R.id.nav_importexport: 
       fragmentClass = ImportexportFragment.class; 
       break; 
      case R.id.nav_backuprestore: 
       fragmentClass = BackuprestoreFragment.class; 
       break; 
      case R.id.nav_setting: 
       fragmentClass = SettingFragment.class; 
       break; 
      default: 
       fragmentClass = DashboardFragment.class; 
     } 

     try { 
      fragment = (Fragment) fragmentClass.newInstance(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

     // Insert the fragment by replacing any existing fragment 
     android.support.v4.app.FragmentManager fragmentManager = getSupportFragmentManager(); 
     fragmentManager.beginTransaction().replace(R.id.content_dashboard, fragment).commit(); 

     // Highlight the selected item has been done by NavigationView 
     menuItem.setChecked(true); 
     // Set action bar title 
     setTitle(menuItem.getTitle()); 
     // Close the navigation drawer 

    } 

} 
+0

在onCreate中,您沒有任何碎片加載 –

+0

我該如何添加? –

+0

閱讀官方的Android Fragment文檔。已經很好地回答了。你可以在onCreate中調用'selectDrawerItem',並在你想顯示的任何片段上開始 –

回答

0

你已經在抽屜項目的點擊設置片段類。

case R.id.nav_dashboard: 
       fragmentClass = DashboardFragment.class; 
       break; 

以下是您獲取ID並打開DashboardFragment的多個片段的代碼。

android.support.v4.app.FragmentManager fragmentManager = getSupportFragmentManager(); 
     fragmentManager.beginTransaction().replace(R.id.content_dashboard, fragment).commit(); 

片段完全更換過來。

+0

我也在課堂上使用過這個,但是當我選擇物品時它會工作。我想知道如何設置基本主類當我開始活動 –

+0

所以你告訴你沒有片段 –

+0

請仔細閱讀問題,然後給出答案 –