DRYな備忘録

Don't Repeat Yourself.

【Android】WebViewの設置とWebView内でのURLのロード

ActivityにWebViewを設置して、任意のURLをWebViewの中で表示したいじゃないですか。

ざっくりまとめ

  1. WebViewタグをxmlに追加
  2. ActivityにてWebViewを取得し、loadUrlメソッドを呼ぶ
  3. デフォルトブラウザを開くな!

WebViewタグをxmlに追加

f:id:otiai10:20150923201139p:plain

結果こうなる。Designのほうから置いたほうが早いかも。xml直接編集でもいいけど。

     android:paddingBottom="@dimen/activity_vertical_margin"
     tools:context="com.otiai10.chantroid.RoomActivity">

-    <TextView android:text="@string/hello_world" android:layout_width="wrap_content"
-        android:layout_height="wrap_content" />
+    <WebView
+        android:layout_width="fill_parent"
+        android:layout_height="fill_parent"
+        android:id="@+id/oppaiWebView"
+        android:layout_alignParentTop="true"
+        android:layout_alignParentStart="true" />

 </RelativeLayout>

ActivityにてWebViewを取得し、loadUrlメソッドを呼ぶ

Androidだいぶ慣れてきたので、たぶんActivityの中からViewを取得して、そのメソッド呼ぶんだろうなと思って書いたらその通りだった。

死亡フラグ

@@ -12,6 +14,11 @@ public class RoomActivity extends Activity {
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_room);
+
+        // ここでWebViewの中身をつくる
+        WebView oppaiWV = (WebView)this.findViewById(R.id.oppaiWebView);
+        oppaiWV.loadUrl("http://google.com");
     }

デフォルトブラウザを開くな!

喜んでRunしたら、なぜか http://google.comChromeで開いちゃう。なんでやねんと思って調べたら、以下のやつだった。

To open links clicked by the user, simply provide a WebViewClient for your WebView, using setWebViewClient().

以下を追加

         setContentView(R.layout.activity_room);

         // ここでWebViewの中身をつくる
         WebView oppaiWV = (WebView)this.findViewById(R.id.oppaiWebView);
+        oppaiWV.setWebViewClient(new WebViewClient());
         oppaiWV.loadUrl("http://google.com");
     }

これで、このActivityが生まれたとき、WebViewにhttp://google.comが表示されている感じになった。やったー

DRY