2013-11-22 3 views
0

Я выполнил следующий пример: http://javatechig.com/android/navigation-drawer-android-example, чтобы создать ящик для навигации в своем приложении. Я могу создать его, но он показывает мой фрагмент, только когда я нажимаю в первом пункте меню. Я бы создал непосредственно на onCreate мой первый фрагмент без щелчка элемента, потому что это будет еще один фрагмент. Как мне это сделать? Это нав ящик активности, который начинается OnClick фрагмент:NavigationDrawer onСоздать пустую деятельность

public class MainNavDrawer extends Activity { 
    // Within which the entire activity is enclosed 
    private DrawerLayout mDrawerLayout; 

    // ListView represents Navigation Drawer 
    private ListView mDrawerList; 
    public TextView textview; 
    // ActionBarDrawerToggle indicates the presence of Navigation Drawer in the action bar 
    private ActionBarDrawerToggle mDrawerToggle; 

    // Title of the action bar 
    private String mTitle = ""; 

    @SuppressLint("NewApi") 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

      super.onCreate(savedInstanceState); 
      setContentView(R.layout.menu_listview); 

      mTitle = "Androi Reboot"; 
      getActionBar().setTitle(mTitle); 

      // Getting reference to the DrawerLayout 
      mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 

      mDrawerList = (ListView) findViewById(R.id.drawer_list); 

      // Getting reference to the ActionBarDrawerToggle 
      mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, 
          R.drawable.ic_drawer, R.string.drawer_open, 
          R.string.drawer_close) { 

        /** Called when drawer is closed */ 
        public void onDrawerClosed(View view) { 
          getActionBar().setTitle(mTitle); 
          invalidateOptionsMenu(); 

        } 

        /** Called when a drawer is opened */ 
        public void onDrawerOpened(View drawerView) { 
          getActionBar().setTitle("Androi Reboot"); 
          invalidateOptionsMenu(); 
        } 

      }; 



      // Setting DrawerToggle on DrawerLayout 
      mDrawerLayout.setDrawerListener(mDrawerToggle); 

      // Creating an ArrayAdapter to add items to the listview mDrawerList 
      ArrayAdapter<String> adapter = new ArrayAdapter<String>(getBaseContext(), 
          R.layout.arraylist, getResources().getStringArray(R.array.menus)); 

      // Setting the adapter on mDrawerList 
      mDrawerList.setAdapter(adapter); 

      // Enabling Home button 
      getActionBar().setHomeButtonEnabled(true); 

      // Enabling Up navigation 
      getActionBar().setDisplayHomeAsUpEnabled(true); 

      // Setting item click listener for the listview mDrawerList 
      mDrawerList.setOnItemClickListener(new OnItemClickListener() { 

        @Override 
        public void onItemClick(AdapterView<?> parent, View view, 
            int position, long id) { 

          // Getting an array of rivers 
          String[] menuItems = getResources().getStringArray(R.array.menus); 

          // Currently selected river 
          mTitle = menuItems[position]; 

          // Creating a fragment object 
          MainActivity rFragment = new MainActivity(); 

          // Passing selected item information to fragment 
          Bundle data = new Bundle(); 
          data.putInt("position", position); 
          data.putString("url", getUrl(position)); 
          rFragment.setArguments(data); 


          // Getting reference to the FragmentManager 
          FragmentManager fragmentManager = getFragmentManager(); 

          // Creating a fragment transaction 
          FragmentTransaction ft = fragmentManager.beginTransaction(); 

          // Adding a fragment to the fragment transaction 
          ft.replace(R.id.content_frame, rFragment); 

          // Committing the transaction 
          ft.commit(); 

          // Closing the drawer 
          mDrawerLayout.closeDrawer(mDrawerList); 

        } 
      }); 
    } 

    protected String getUrl(int position) { 
      switch (position) { 
      case 0: 
        return "http://javatechig.com"; 
      default: 
        return "http://javatechig.com"; 
      } 
    } 

    @Override 
    protected void onPostCreate(Bundle savedInstanceState) { 
      super.onPostCreate(savedInstanceState); 
      mDrawerToggle.syncState(); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
      if (mDrawerToggle.onOptionsItemSelected(item)) { 
        return true; 
      } 
      return super.onOptionsItemSelected(item); 
    } 

    /** Called whenever we call invalidateOptionsMenu() */ 
    @Override 
    public boolean onPrepareOptionsMenu(Menu menu) { 
      // If the drawer is open, hide action items related to the content view 
      boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList); 

      menu.findItem(R.id.action_settings).setVisible(!drawerOpen); 
      return super.onPrepareOptionsMenu(menu); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
      getMenuInflater().inflate(R.menu.main, menu); 
      return true; 
    } 
} 

Как вы можете видеть OnClick он открывает свою MainActivity (это фрагмент). Но я хочу отображать его, когда я открываю приложение не тогда, когда нажимаю. Благодаря

+0

попробовать образец на http://developer.android.com/training/implementing-navigation/nav-drawer.html – Raghunandan

+0

Пожалуйста, вы можете помочь мне с моим кодом? Я не могу все изменить сейчас. –

ответ

1

попробовать это

@Override 
protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.menu_listview); 

     mTitle = "Androi Reboot"; 
     getActionBar().setTitle(mTitle); 

     // Getting reference to the DrawerLayout 
     mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 

     mDrawerList = (ListView) findViewById(R.id.drawer_list); 

     // Getting reference to the ActionBarDrawerToggle 
     mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, 
         R.drawable.ic_drawer, R.string.drawer_open, 
         R.string.drawer_close) { 

       /** Called when drawer is closed */ 
       public void onDrawerClosed(View view) { 
         getActionBar().setTitle(mTitle); 
         invalidateOptionsMenu(); 

       } 

       /** Called when a drawer is opened */ 
       public void onDrawerOpened(View drawerView) { 
         getActionBar().setTitle("Androi Reboot"); 
         invalidateOptionsMenu(); 
       } 

     }; 



     // Setting DrawerToggle on DrawerLayout 
     mDrawerLayout.setDrawerListener(mDrawerToggle); 

     // Creating an ArrayAdapter to add items to the listview mDrawerList 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(getBaseContext(), 
         R.layout.arraylist, getResources().getStringArray(R.array.menus)); 

     // Setting the adapter on mDrawerList 
     mDrawerList.setAdapter(adapter); 

     // Enabling Home button 
     getActionBar().setHomeButtonEnabled(true); 

     // Enabling Up navigation 
     getActionBar().setDisplayHomeAsUpEnabled(true); 

     // Setting item click listener for the listview mDrawerList 
     mDrawerList.setOnItemClickListener(new OnItemClickListener() { 

       @Override 
       public void onItemClick(AdapterView<?> parent, View view, 
           int position, long id) { 

         fireFragment(position) 
         // Closing the drawer 
         mDrawerLayout.closeDrawer(mDrawerList); 

       } 
     }); 

     fireFragment(0); 
} 

private void fireFragment(int position){ 
    // Getting an array of rivers 
    String[] menuItems = getResources().getStringArray(R.array.menus); 

    // Currently selected river 
    mTitle = menuItems[position]; 

    // Creating a fragment object 
    MainActivity rFragment = new MainActivity(); 

    // Passing selected item information to fragment 
    Bundle data = new Bundle(); 
    data.putInt("position", position); 
    data.putString("url", getUrl(position)); 
    rFragment.setArguments(data); 


    // Getting reference to the FragmentManager 
    FragmentManager fragmentManager = getFragmentManager(); 

    // Creating a fragment transaction 
    FragmentTransaction ft = fragmentManager.beginTransaction(); 

    // Adding a fragment to the fragment transaction 
    ft.replace(R.id.content_frame, rFragment); 

    // Committing the transaction 
    ft.commit(); 
} 
+0

Теперь я стараюсь, тем временем спасибо –

+0

Да, похоже, работает! Спасибо. Что именно вы сделали? –

+0

Просто обрезанный первый фрагмент вручную в конце метода onCreate. Другие фрагменты срабатывают, когда вы нажимаете элемент ящика –

Смежные вопросы