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
Post a Comment