java - How to link local HTML pages with strings in a navigation drawer? -


i have simple app webview load local html pages, put files inside assets, in navigation drawer want have text/links open these pages, tried follow tuts on web somehow can't make happen.

any appreciated!

my code on android studio:

androidmanifest.xml

<?xml version="1.0" encoding="utf-8"?> 

<application     android:allowbackup="true"     android:icon="@drawable/ic_launcher"     android:label="@string/app_name"     android:theme="@style/apptheme" >     <activity         android:name=".mainactivity"         android:label="@string/app_name" >         <intent-filter>             <action android:name="android.intent.action.main" />              <category android:name="android.intent.category.launcher" />         </intent-filter>     </activity> </application>  <uses-permission android:name="android.permission.internet" /> 

activity_main.xml

<android.support.v4.widget.drawerlayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent">   <relativelayout     android:layout_width="match_parent"     android:layout_height="match_parent"     android:paddingleft="@dimen/activity_horizontal_margin"     android:paddingright="@dimen/activity_horizontal_margin"     android:paddingtop="@dimen/activity_vertical_margin"     android:paddingbottom="@dimen/activity_vertical_margin"     tools:context=".mainactivity"     android:background="#ffffffff">      <textview         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:layout_centerhorizontal="true"         android:text="history of s.johnson high school"         android:textsize="24sp"         android:gravity="center"         android:layout_margintop="100dp"/>      <imageview         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:src="@drawable/sjohnson"         android:layout_alignparentbottom="true"         android:layout_centerhorizontal="true"/>      <webview         android:id="@+id/activity_main_webview"         android:layout_width="match_parent"         android:layout_height="match_parent" />  </relativelayout>  <!-- side navigation drawer ui --> <listview     android:id="@+id/navlist"     android:layout_width="250dp"     android:layout_height="match_parent"     android:layout_gravity="left|start"     android:background="#ffeeeeee"/> 

mainactivity.java

public class mainactivity extends actionbaractivity { private webview mwebview; private listview mdrawerlist; private drawerlayout mdrawerlayout; private arrayadapter<string> madapter; private actionbardrawertoggle mdrawertoggle; private string mactivitytitle;  @override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_main);      mwebview = (webview) findviewbyid(r.id.activity_main_webview);      mdrawerlist = (listview)findviewbyid(r.id.navlist);mdrawerlayout = (drawerlayout)findviewbyid(r.id.drawer_layout);     mactivitytitle = gettitle().tostring();      adddraweritems();     setupdrawer();      getsupportactionbar().setdisplayhomeasupenabled(true);     getsupportactionbar().sethomebuttonenabled(true);      websettings websettings = mwebview.getsettings();     websettings.setjavascriptenabled(true);     mwebview.setwebviewclient(new myappwebviewclient());     mwebview.loadurl("file:///android_asset/www/index.html");   }  @override public void onbackpressed() {     if(mwebview.cangoback()) {         mwebview.goback();     } else {         super.onbackpressed();     } }  private void adddraweritems() {     string[] osarray = { "android", "ios", "windows", "os x", "linux" };     madapter = new arrayadapter<string>(this, android.r.layout.simple_list_item_1, osarray);     mdrawerlist.setadapter(madapter);      mdrawerlist.setonitemclicklistener(new adapterview.onitemclicklistener() {         @override         public void onitemclick(adapterview<?> parent, view view, int position, long id) {             toast.maketext(mainactivity.this, "time upgrade!", toast.length_short).show();         }     }); }  private void setupdrawer() {     mdrawertoggle = new actionbardrawertoggle(this, mdrawerlayout, r.string.drawer_open, r.string.drawer_close) {           public void ondraweropened(view drawerview) {             super.ondraweropened(drawerview);             getsupportactionbar().settitle("navigation!");             invalidateoptionsmenu(); // creates call onprepareoptionsmenu()         }           public void ondrawerclosed(view view) {             super.ondrawerclosed(view);             getsupportactionbar().settitle(mactivitytitle);             invalidateoptionsmenu(); // creates call onprepareoptionsmenu()         }     };      mdrawertoggle.setdrawerindicatorenabled(true);     mdrawerlayout.setdrawerlistener(mdrawertoggle); }  @override protected void onpostcreate(bundle savedinstancestate) {     super.onpostcreate(savedinstancestate);     // sync toggle state after onrestoreinstancestate has occurred.     mdrawertoggle.syncstate(); }  @override public void onconfigurationchanged(configuration newconfig) {     super.onconfigurationchanged(newconfig);     mdrawertoggle.onconfigurationchanged(newconfig); }  @override public boolean oncreateoptionsmenu(menu menu) {     // inflate menu; adds items action bar if present.     getmenuinflater().inflate(r.menu.menu_main, menu);     return true; }  @override public boolean onoptionsitemselected(menuitem item) {     // handle action bar item clicks here. action bar     // automatically handle clicks on home/up button, long     // specify parent activity in androidmanifest.xml.     int id = item.getitemid();      //noinspection simplifiableifstatement     if (id == r.id.action_settings) {         return true;     }      // activate navigation drawer toggle     if (mdrawertoggle.onoptionsitemselected(item)) {         return true;     }      return super.onoptionsitemselected(item); } 

myappwebviewclient.java

public class myappwebviewclient extends webviewclient {  @override public boolean shouldoverrideurlloading(webview view, string url) {     if(uri.parse(url).gethost().length() == 0) {         return false;     }      intent intent = new intent(intent.action_view, uri.parse(url));     view.getcontext().startactivity(intent);     return true; } 

themes.xml

<resources>  <!-- base application theme. --> <style name="apptheme"     parent="@style/theme.appcompat.light.darkactionbar">     <item name="android:actionbarstyle">@style/myactionbar</item>      <!-- support library compatibility -->     <item name="actionbarstyle">@style/myactionbar</item> </style>  <!-- actionbar styles --> <style name="myactionbar"     parent="@style/widget.appcompat.light.actionbar.solid.inverse">     <item name="android:background">@drawable/actionbar_background</item>      <!-- support library compatibility -->     <item name="background">@drawable/actionbar_background</item> </style> 

strings.xml

<?xml version="1.0" encoding="utf-8"?> 

<string name="app_name">info</string> <string name="hello_world">hello world!</string> <string name="action_settings">settings</string> <string name="drawer_open">open navigation drawer</string> <string name="drawer_close">close navigation drawer</string> 

as understand want load yours html file assets webview clicking items in drawermenu? if it's you need add lines onclicklistener of yours listview in drawer:

mdrawerlist.setonitemclicklistener(new adapterview.onitemclicklistener() {     @override     public void onitemclick(adapterview<?> parent, view view, int position, long id) {         toast.maketext(mainactivity.this, "time upgrade!", toast.length_short).show();         //load file webview         mwebview.loadurl("replace_it_with_path_to_file");         //close drawer         mdrawerlayout.closedrawers();     } }); 

Comments