android - Multiple html files in fragment using webView via ListView -
i created webview application listview in fragment. followed link: opening multiple local html files using webview via listview when click on item should redirect me detail of webview item. trying implement in fragment 1 item successful while other items not point me webview detail should be. i've been looking solution still no luck. here code
mainactivity:
package com.listviewfragment.withsublist; import android.support.v4.app.fragmenttransaction; import android.support.v7.app.appcompatactivity; import android.os.bundle; public class mainactivity extends appcompatactivity { @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); main_listfragment main_listfragment = new main_listfragment(); fragmenttransaction fragmenttransaction = getsupportfragmentmanager().begintransaction(); fragmenttransaction.replace(r.id.content, main_listfragment); fragmenttransaction.commit(); } }
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.constraintlayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.listviewfragment.withsublist.mainactivity"> <framelayout android:id="@+id/content" android:layout_width="match_parent" android:layout_height="match_parent"></framelayout> </android.support.constraint.constraintlayout>
main_listfragment.java
package com.listviewfragment.withsublist; import android.os.bundle; import android.support.v4.app.fragment; import android.support.v4.app.fragmenttransaction; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; import android.widget.adapterview; import android.widget.arrayadapter; import android.widget.listview; /** * simple {@link fragment} subclass. */ public class main_listfragment extends fragment { listview listview; public main_listfragment() { // required empty public constructor } @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { view rootview = inflater.inflate(r.layout.fragment_main_list, container, false); // inflate layout fragment listview = (listview) rootview.findviewbyid(r.id.list); string[] values = new string[] { "detail webview 1", "detail webview 2", "detail webview 3", }; arrayadapter<string> adapter = new arrayadapter<>(getactivity(), android.r.layout.simple_list_item_1, android.r.id.text1, values); // assign adapter listview listview.setadapter(adapter); // listview item click listener listview.setonitemclicklistener(new adapterview.onitemclicklistener() { @override public void onitemclick(adapterview<?> parent, view view, int position, long id) { // todo auto-generated method stub // listview clicked item value listview.getitematposition(position); if (position == 0) { detail_webview_mainfragment dlm = new detail_webview_mainfragment (); getfragmentmanager().begintransaction().replace(r.id.content, dlm).addtobackstack(null).commit(); } else if (position == 1) { detail_webview_mainfragment dlm = new detail_webview_mainfragment (); getfragmentmanager().begintransaction().replace(r.id.content, dlm).addtobackstack(null).commit(); } else if (position == 2) { detail_webview_mainfragment dlm = new detail_webview_mainfragment ();; getfragmentmanager().begintransaction().replace(r.id.content, dlm).addtobackstack(null).commit(); } } }); return rootview; } }
fragment_main_list.xml
<framelayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.listviewfragment.withsublist.main_listfragment"> <listview android:id="@+id/list" android:layout_width="match_parent" android:layout_height="match_parent"> </listview> </framelayout>
detail_webview_mainfragment.java
package com.listviewfragment.withsublist; import android.os.bundle; import android.support.v4.app.fragment; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; import android.webkit.websettings; import android.webkit.webview; import android.webkit.webviewclient; /** * simple {@link fragment} subclass. */ public class detail_webview_mainfragment extends fragment { webview view; public detail_webview_mainfragment() { // required empty public constructor } @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { //getarguments().getstring("key"); // inflate layout fragment view rootview = inflater.inflate(r.layout.fragment_detail_webview_main, container, false); view = (webview) rootview.findviewbyid(r.id.webview); // enable javascript websettings websettings = view.getsettings(); websettings.setjavascriptenabled(true); view.setwebviewclient(new webviewclient()); int pos = getactivity().getintent().getintextra("key", 0); if (pos == 0) { view.loadurl("file:///android_asset/html/webview1.html"); } else if (pos == 1) { view.loadurl("file:///android_asset/html/webview2.html"); } else if (pos == 2) { view.loadurl("file:///android_asset/html/webview3.html"); } return rootview; } }
fragment_detail_webview_main
<framelayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.listviewfragment.withsublist.detail_webview_mainfragment"> <!-- todo: update blank fragment layout --> <webview android:id="@+id/webview" android:layout_width="match_parent" android:layout_height="match_parent"></webview> </framelayout>
you using same detail fragment position 0,1,2. this:
detail_webview_mainfragment dlm = new detail_webview_mainfragment (); bundle args = new bundle(); args.putint("key", pos); dlm.setarguments(args);
and instead of
int pos = getactivity().getintent().getintextra("key", 0);
in detail fragment :
int pos=0; if (getarguments() != null) { pos= getarguments().getint("key"); }
Comments
Post a Comment