c# - Navigation Drawer with tab in main page android xamarin -


i make app navigation drawer. want add tab in main page when run app, have error in

system.nullreferenceexception: object reference not set instance of object.

actionbar.navigationmode = actionbarnavigationmode.tabs; 

how add tab? code is:

namespace navigationdrawerlayout {     [activity(label = "navigationdrawerlayout", theme = "@style/theme.designdemo", mainlauncher = true, icon = "@drawable/icon")]     public class mainactivity : appcompatactivity     {          drawerlayout drawerlayout;         navigationview navigationview;         protected override void oncreate(bundle bundle)         {             base.oncreate(bundle);              // set our view "main" layout resource             setcontentview(resource.layout.main);             actionbar.navigationmode = actionbarnavigationmode.tabs;               // add tabs action bar               addtab("tab one");             addtab("tab two");             addtab("tab three");             drawerlayout = findviewbyid<drawerlayout>(resource.id.drawer_layout);               // create actionbardrawertoggle button , add toolbar             var toolbar = findviewbyid<v7toolbar>(resource.id.toolbar);             setsupportactionbar(toolbar);               var drawertoggle = new actionbardrawertoggle(this, drawerlayout, toolbar, resource.string.drawer_open, resource.string.drawer_close);             drawerlayout.setdrawerlistener(drawertoggle);             drawertoggle.syncstate();              navigationview = findviewbyid<navigationview>(resource.id.nav_view);             setupdrawercontent(navigationview);            }         private void addtab(string tabtext)         {             android.app.actionbar.tab tab = actionbar.newtab();             tab.settext(tabtext);             tab.tabselected += ontabselected;             actionbar.addtab(tab);         }         private void ontabselected(object sender, android.app.actionbar.tabeventargs args)         {             var currenttab = (android.app.actionbar.tab)sender;              if (currenttab.position == 0)             {              }              else             {              }         }         void setupdrawercontent(navigationview navigationview)         {             navigationview.navigationitemselected += (sender, e) => {                 e.menuitem.setchecked(true);                 drawerlayout.closedrawers();             };         }          public override bool oncreateoptionsmenu(imenu menu)         {              navigationview.inflatemenu(resource.menu.nav_menu);             return true;          }          } } 

main.axml

    <?xml version="1.0" encoding="utf-8"?>    <linearlayout xmlns:android="http://schemas.android.com/apk/res/android"     android:orientation="vertical"     android:layout_width="match_parent"     android:layout_height="match_parent">     <android.support.v4.widget.drawerlayout xmlns:app="http://schemas.android.com/apk/res-auto"         android:id="@+id/drawer_layout"         android:layout_height="match_parent"         android:layout_width="fill_parent"         android:fitssystemwindows="true">         <linearlayout             android:layout_width="match_parent"             android:layout_height="match_parent"             android:orientation="vertical">             <include                 layout="@layout/toolbar" />         </linearlayout>         <android.support.design.widget.navigationview             android:id="@+id/nav_view"             android:layout_height="match_parent"             android:layout_width="300dp"             android:layout_gravity="start"             android:fitssystemwindows="true"             app:headerlayout="@layout/nav_header" />     </android.support.v4.widget.drawerlayout> </linearlayout> 

styles.xml

<?xml version="1.0" encoding="utf-8" ?> <resources>    <style name="theme.designdemo" parent="base.theme.designdemo">   </style>    <style name="base.theme.designdemo" parent="theme.appcompat.light.noactionbar">     <item name="colorprimary">@color/colorprimary</item>     <item name="colorprimarydark">@color/colorprimarydark</item>      </style>   </resources> 

system.nullreferenceexception: object reference not set instance of object.

when want add actionbar tab, activity should have actionbar first, in theme.designdemo, have delete in activity :

<style name="base.theme.designdemo" parent="theme.appcompat.light.noactionbar"> 

it means can't actionbar in activity, , have use toolbar instead. that's why throws nullreferenceexception exception.

how add tab?

with api 21 method actionbarnavigationmode.tabs deprecated. use tablayout in design support library.

its usage simple, add in toolbar.axml :

toolbar.axml :

<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.coordinatorlayout       xmlns:android="http://schemas.android.com/apk/res/android"      xmlns:app="http://schemas.android.com/apk/res-auto"      ...      >   <android.support.design.widget.appbarlayout        ...        android:theme="@style/themeoverlay.appcompat.dark.actionbar">       <android.support.v7.widget.toolbar         android:id="@+id/toolbar"         android:layout_width="match_parent"         android:layout_height="wrap_content"         android:elevation="4dp"         android:background="@color/colorprimary" />       <android.support.design.widget.tablayout         android:id="@+id/tablayout"         android:layout_height="wrap_content"         android:layout_width="match_parent">         <android.support.design.widget.tabitem             android:text="tab one"/>         <android.support.design.widget.tabitem             android:text="tab two"/>         <android.support.design.widget.tabitem             android:text="tab three"/>      </android.support.design.widget.tablayout>   </android.support.design.widget.appbarlayout> </android.support.design.widget.coordinatorlayout> 

use in code :

tablayout tablayout = findviewbyid<tablayout>(resource.id.tablayout); tablayout.setupwithviewpager(viewpager); //the one-stop shop setting tablayout viewpager 

here effect. more information, read document.


Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -