2017-02-02 2 views
0

Я новичок в разработке Android. Я только что создал один проект андроидаПо умолчанию ящик для навигации по каждому виду деятельности

при создании проекта для Android. Я выбрал тип активности в качестве навигационного ящика (т. е. действительность). теперь я столкнулся с тем, что созданная деятельность не содержит этот ящик. но я хочу показать, что ящик навигации на каждом мероприятии. Возможно ли это?

on googling Я нашел несколько учебных пособий, но они предназначены для пользовательского навигационного ящика. любые предложения, пожалуйста? потому что я не хочу добавлять кнопку назад, чтобы вернуться из текущей активности. Я добавил домашнюю кнопку в меню ящика.

+0

использовать фрагмент для доступа к ящику в каждом пользовательском интерфейсе. Поскольку фрагмент соответствует стандарту –

+0

, вы можете создать BaseActivity с ящиком навигации и расширять эту BaseActivity в каждом действии. и Другой способ - использовать framelayout и изменять фрагмент на нем. – frnd

+0

checkout http://stackoverflow.com/questions/19451715/same-navigation-drawer-in-different-activities – frnd

ответ

0
Try this:- 

Create Baseactivty.java and add following code:- 



public class BaseActivity extends Activity 
{ 
    public DrawerLayout drawerLayout; 
    public ListView drawerList; 
    public String[] layers; 
    private ActionBarDrawerToggle drawerToggle; 
    private Map map; 

    protected void onCreate(Bundle savedInstanceState) 
    { 
     // R.id.drawer_layout should be in every activity with exactly the same id. 
     drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 

     drawerToggle = new ActionBarDrawerToggle((Activity) this, drawerLayout, R.drawable.ic_drawer, 0, 0) 
     { 
      public void onDrawerClosed(View view) 
      { 
       getActionBar().setTitle(R.string.app_name); 
      } 

      public void onDrawerOpened(View drawerView) 
      { 
       getActionBar().setTitle(R.string.menu); 
      } 
     }; 
     drawerLayout.setDrawerListener(drawerToggle); 

     getActionBar().setDisplayHomeAsUpEnabled(true); 
     getActionBar().setHomeButtonEnabled(true); 

     layers = getResources().getStringArray(R.array.layers_array); 
     drawerList = (ListView) findViewById(R.id.left_drawer); 
     View header = getLayoutInflater().inflate(R.layout.drawer_list_header, null); 
     drawerList.addHeaderView(header, null, false); 
     drawerList.setAdapter(new ArrayAdapter<String>(this, R.layout.drawer_list_item, android.R.id.text1, 
       layers)); 
     View footerView = ((LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(
       R.layout.drawer_list_footer, null, false); 
     drawerList.addFooterView(footerView); 

     drawerList.setOnItemClickListener(new OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> arg0, View arg1, int pos, long arg3) { 
       map.drawerClickEvent(pos); 
      } 
     }); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 

     if (drawerToggle.onOptionsItemSelected(item)) { 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 

    } 

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

    @Override 
    public void onConfigurationChanged(Configuration newConfig) { 
     super.onConfigurationChanged(newConfig); 
     drawerToggle.onConfigurationChanged(newConfig); 
    } 
} 

продлить этот Baseactivity для всех видов деятельности, где вы хотите navigationdrawer

0

Один из подход использует панель навигации и FragmentManager

1.Create MainActivity и поставить DrawerLayout как это main_content, как

<android.support.v4.widget.DrawerLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <!-- The main content view --> 
    <FrameLayout 
     android:id="@+id/content_frame" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 
    <!-- The navigation drawer --> 
    <ListView android:id="@+id/left_drawer" 
     android:layout_width="240dp" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     android:choiceMode="singleChoice" 
     android:divider="@android:color/transparent" 
     android:dividerHeight="0dp" 
     android:background="#111"/> 
</android.support.v4.widget.DrawerLayout> 
  1. Инициализационный список ящиков

    public class MainActivity extends Activity { 
        private String[] mPlanetTitles; 
        private DrawerLayout mDrawerLayout; 
        private ListView mDrawerList; 
    
    
        @Override 
        public void onCreate(Bundle savedInstanceState) { 
         super.onCreate(savedInstanceState); 
         setContentView(R.layout.activity_main); 
    
         mPlanetTitles = getResources().getStringArray(R.array.planets_array); 
         mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
         mDrawerList = (ListView) findViewById(R.id.left_drawer); 
    
         // Set the adapter for the list view 
         mDrawerList.setAdapter(new ArrayAdapter<String>(this, 
           R.layout.drawer_list_item, mPlanetTitles)); 
         // Set the list's click listener 
         mDrawerList.setOnItemClickListener(new DrawerItemClickListener()); 
    
        } 
    } 
    
  2. Handle Навигация Нажмите События

    private class DrawerItemClickListener implements ListView.OnItemClickListener { 
        @Override 
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
         selectItem(position); 
        } 
    } 
    
    /** Swaps fragments in the main content view */ 
    private void selectItem(int position) { 
        // Create a new fragment and specify the planet to show based on position 
        Fragment fragment = new PlanetFragment(); 
        Bundle args = new Bundle(); 
        args.putInt(PlanetFragment.ARG_PLANET_NUMBER, position); 
        fragment.setArguments(args); 
    
        // Insert the fragment by replacing any existing fragment 
        FragmentManager fragmentManager = getFragmentManager(); 
        fragmentManager.beginTransaction() 
            .replace(R.id.content_frame, fragment) 
            .commit(); 
    
        // Highlight the selected item, update the title, and close the drawer 
        mDrawerList.setItemChecked(position, true); 
        setTitle(mPlanetTitles[position]); 
        mDrawerLayout.closeDrawer(mDrawerList); 
    } 
    
    @Override 
    public void setTitle(CharSequence title) { 
        mTitle = title; 
        getActionBar().setTitle(mTitle); 
    } 
    

4 Открытие и закрытие События на NavigationDrawer

public class MainActivity extends Activity { 
private DrawerLayout mDrawerLayout; 
private ActionBarDrawerToggle mDrawerToggle; 
private CharSequence mDrawerTitle; 
private CharSequence mTitle; 
... 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    ... 

    mTitle = mDrawerTitle = getTitle(); 
    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
    mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, 
      R.string.drawer_open, R.string.drawer_close) { 

     /** Called when a drawer has settled in a completely closed state. */ 
     public void onDrawerClosed(View view) { 
      super.onDrawerClosed(view); 
      getActionBar().setTitle(mTitle); 
      invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() 
     } 

     /** Called when a drawer has settled in a completely open state. */ 
     public void onDrawerOpened(View drawerView) { 
      super.onDrawerOpened(drawerView); 
      getActionBar().setTitle(mDrawerTitle); 
      invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() 
     } 
    }; 

    // Set the drawer toggle as the DrawerListener 
    mDrawerLayout.setDrawerListener(mDrawerToggle); 
} 

/* Called whenever we call invalidateOptionsMenu() */ 
@Override 
public boolean onPrepareOptionsMenu(Menu menu) { 
    // If the nav drawer is open, hide action items related to the content view 
    boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList); 
    menu.findItem(R.id.action_websearch).setVisible(!drawerOpen); 
    return super.onPrepareOptionsMenu(menu); 
} 
    } 

Другой подход является сделать BaseActivity поставить NavigationDrawer в Затем он расширяет BaseActivity для все ChildActivities, так что вы можете использовать один и тот же навигационный ящик в приложении.

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