08 Membuat WebView Pada Fragment PDF
08 Membuat WebView Pada Fragment PDF
1. Pada Modul Latihan ini kita akan membuat sebuah WebView yang menampilkan halaman web
dengan URL tertentu pada fragment Android. Fragment frg_welcome yang telah kita buat akan
ditampilkan pertama kali dan langsung menampilkan halaman web http://aflowz.com. Jika
hubungan internet terputus akan ada pesan gambar pada webview berupa image disconnected.
3. Beri nama id untuk Button btnRefresh dan Text nya “Refresh”, WebView wvAflowz. Tambahkan
properties wvAflowz relative dibawah button dengan properties android
android:layout_below="@id/btnRefresh"
4. Untuk Button buat width nya match_parent agar penuh melebar kesamping. Dan height nya
wrap_content sesuai tingga default sebuah button. Untuk WebView wvAflowz buat width dan
height nya match_parent sehingga memenuhi sisa space layout karena akan menampilkan
halaman web.
5. File layout fragment frg_welcome secara lengkap ditampilkan dibawah ini. Untuk Text Button
dan komponen lain yang memiliki Text sebaiknya dibuat di variable string, bukan diseting
langsung di layout. Hal tersebut diperlukan ketika kita membuat aplikasi android multi language
dengan banyak bahasa. Dengan membuatnya di variable string.xml maka akan dibuat grup-grup
elemen xml untuk setiap bahasa yang berbeda tanpa mengganggu file layout 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.example.astimen.myapplication.fragment.frg_welcome">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:text="Refresh"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/btnRefresh" />
<WebView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/btnRefresh"
android:id="@+id/wvAflowz" />
</RelativeLayout>
</FrameLayout>
6. Sekarang kita akan menambah kode program java di frg_welcome. Buka file java
appjavacomfragmentfrg_welcome.java. Tambahkan class AsyncTask myikc() di Public
View onCreateVeiew agar memiliki proses thread yang berbeda dengan MainAcitivity yang
menjalankan drawer sehingga keduanya dapat berjalan bersama.
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
new myikc().execute();
7. Tambahkan class myikc() dan kita akan menambahkan proses inisiasi komponen layout di fungsi
OnPostExecute di bagian akhir badan program frg_welcome.
@Override
protected void onPreExecute() {
super.onPreExecute();
}
return null;
}
btnHome.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// do something
}
});
String url="http://aflowz.com";
wv.loadUrl(url);
wv.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
wv.setWebViewClient(new WebViewClient() {
public void onReceivedError(WebView view, int errorCode, String description,
String
failingUrl) {
Toast.makeText(getActivity(), "Mohon periksa koneksi data internet anda
...", Toast.LENGTH_SHORT).show();
WebView wv =(WebView) getView().findViewById(R.id.wvAflowz);
wv.loadDataWithBaseURL("file:///android_asset/", "<img
src=\"file:///android_res/drawable/internetdisc.png\"/>", "text/html", "utf-8", null);
}
});
}
}
8. Ketika fragment frg_welcome diload kita akan merubah Text pada Button btnRefresh dengan
text “Selamat Datang di Home” dengan methode setText(“text”) sbb :
Button btnWf=(Button) getView().findViewById(R.id.btnRefresh);
btnWf.setText("Selamat Datang di Home");
9. Selanjutnya kita akan menambahkan event onClick btnHome untuk menjalankan execute()
kembali class myikc() sehingga fragment akan diload ulang dengan menampilkan informasi
TOAST “Loading Home” sbb:
btnHome.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// do something
}
});
10. WebView wvAflowz akan kita setting untuk menampilkan URL sebuah Web dengan address
http://aflowz.com dencan code sbb :
WebView wv =(WebView) getView().findViewById(R.id.wvAflowz);
wv.getSettings().setJavaScriptEnabled(true);
wv.getSettings().setDefaultZoom(WebSettings.ZoomDensity.FAR);
String url="http://aflowz.com";
wv.loadUrl(url);
wv.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
11. Karena kita mengakses sebuah web di internet maka perlu ditambahkan setting internet di file
appmanifestsAndroidManifest.xml dengan code :
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
12. Terakhir kita membuat informasi terkait koneksi internet jika hubungan terputus sehingga user
pengguna dapat mengaktifkan koneksinya terlebih dahulu. Jika koneksi putus maka halaman
web tidak menampilkan error tetapi menampilkan sebuah gambar ilustrasi koneksi bermasalah.
Disertai Informasi Toast “Mohon periksa koneksi internet anda ....”.
wv.setWebViewClient(new WebViewClient() {
public void onReceivedError(WebView view, int errorCode, String description, String
failingUrl) {
Toast.makeText(getActivity(), "Mohon periksa koneksi data internet anda
...", Toast.LENGTH_SHORT).show();
14. Agar supaya fragment frg_welcome ditampilkan ketika aplikasi pertama kali dibuka maka kita
perlua mengcopy code inisiasi fragment frg_welcome di menu drawer ke class inisiasi
MainActivity. Buka file java MainActivity appjavacomMainActivity.java
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.frm_utama, frg_welcome.newInstance("0","0"))
.commit();
getSupportActionBar().setTitle("Welcome AflowZ");
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.frm_utama, frg_welcome.newInstance("0","0"))
.commit();
getSupportActionBar().setTitle("Welcome AflowZ");
}
17. Jalankan Button Build App agar gradle melakukan building aplikasi dan menginstallnya ke gadget
AVD dan menampilkan fragment frg_welcome dengan webview mengakses web url
http://aflowz.com.