2013年2月8日 星期五

Fragment子類別之WebViewFragment


在Fragment子類別中包括了 ListFragment 、DialogFragment、PreferenceFragment 及 WebViewFragment,前幾篇已經討論過ListFragmentDialogFragmentPreferenceFragment 接著繼續探討WebViewFragment應用。
WebViewFragment可以把網頁顯示在Fragment中的功能,它跟WebView(網頁視圖)功能相同,主要是用來當作瀏覽器顯示網頁畫面;例如點選類似新聞或RSS列表後進入新聞網頁畫面功能。




步驟:
1. 用Eclipse建立一個Android 3.x項目以上專案並命名為WebViewFragmentExample

2. main.xml內容修改如下:
<RelativeLayout 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=".MainActivity" >

    <FrameLayout
        android:id="@+id/ShowWebFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</RelativeLayout>

3.在src/ package目錄下增加 Fragment1.java,內容如下:

package edu.nkut.webviewfragmentexample;

import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.webkit.WebViewFragment;

/**
 * WebViewFragment
 */
public class Fragment1 extends WebViewFragment {

    static Fragment1 newInstance(String title) {
        Fragment1 fragment = new Fragment1();
        Bundle args = new Bundle();
        args.putString("title", title);
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public void onActivityCreated(final Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        WebView webView = getWebView();
        WebSettings setting = webView.getSettings();
        setting.setJavaScriptEnabled(true);
        setting.setPluginsEnabled(true);

        webView.setWebViewClient(new WebViewClient());
        webView.loadUrl("https://www.google.com.tw/");
    }
}

4. MainActivity內容如下:

package edu.nkut.webviewfragmentexample;

import android.app.Activity;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.view.Window;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 取消標題
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);

            // Fragment初始化
            Fragment1 wf = new Fragment1();
            FragmentTransaction ft = getFragmentManager().beginTransaction();
            ft.add(R.id.ShowWebFragment, wf);
            ft.commit();
    }
}

5. AndroidManifest.xml別忘記加入Internet權限。
<uses-permission android:name="android.permission.INTERNET"/>

執行結果:


上述是一個簡單的WebViewFragment,如果配合前面文章所述的ListFragment可以延伸如下圖畫面:


按照目前Fragment官網上的四個子類別大致上到本部落格已經全部整理出來,其他如有相關資訊後續再找時間慢慢補充。

參考:
1.WebView
http://developer.android.com/reference/android/webkit/WebView.html

2.WebViewFragment
http://developer.android.com/reference/android/webkit/WebViewFragment.html

3.Fragment官網
http://developer.android.com/reference/android/app/Fragment.html


==============延伸閱讀=====================

1.第一支Android Fragment程式--HelloFragment
http://cheng-min-i-taiwan.blogspot.tw/2012/04/android-fragment-hellofragment.html

2.Android Fragments 的生命週期
http://cheng-min-i-taiwan.blogspot.tw/2012/12/android-fragments.html

3.Fragment間的資料傳遞
http://cheng-min-i-taiwan.blogspot.tw/2013/01/fragment.html

4.Fragment與Activity間的資料傳遞
http://cheng-min-i-taiwan.blogspot.tw/2013/02/fragmentactivity.html

5.Fragment子類別之ListFragment
http://cheng-min-i-taiwan.blogspot.tw/2013/02/fragmentlistfragment.html

6.Fragment子類別之DialogFragment
http://cheng-min-i-taiwan.blogspot.tw/2013/02/fragmentdialogfragment.html

7.Fragment子類別之PreferenceFragment
http://www.cheng-min-i-taiwan.blogspot.tw/2013/02/fragmentpreferencefragment.html

8.Fragment子類別之WebViewFragment
http://cheng-min-i-taiwan.blogspot.tw/2013/02/fragmentwebviewfragment.html


沒有留言:

張貼留言