您的位置:首页 > 移动开发

我的学习之旅:初涉android:WebView 与 Intent

2014-02-12 20:01 218 查看
写这篇博客的目的是为了总结自己每天学到的东西,内容可能是比较简单,没有很深入的研究。

不过大概的使用还是可以的。

首先看一下布局文件,在这里我定义了两个布局文件来实现Intent的跳转,

一个是主布局文件,代码如下:

activity_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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<EditText
android:id="@+id/myEditText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/input"
android:singleLine="true"/>
<Button
android:id="@+id/myButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/myEditText"
android:layout_alignLeft="@+id/myEditText"
android:text="@string/turnto"/>

</RelativeLayout>


在这里我写一个EditText的目的是为了可以自己输入网址,点击按钮实现跳转。

下一个布局文件只有一个WebView,用来装载网页:

webview.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<WebView
android:id="@+id/myWebView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>

</LinearLayout>


接着就到了写Activity了

MainActivity.java

package com.example.mywebview;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends Activity {

private EditText myEditText = null;
private Button myButton = null;
public String uri = new String();

@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

myEditText = (EditText) findViewById(R.id.myEditText);
myButton = (Button) findViewById(R.id.myButton);

ButtonListener listener = new ButtonListener();
myButton.setOnClickListener(listener);
}

// 实现页面跳转,并把EditText中的内容用intent传送到MyWebView这个Activity中
class ButtonListener implements View.OnClickListener {

@Override
public void onClick(final View v) {
uri = myEditText.getText().toString();
Intent intent = new Intent();
intent.setClass(MainActivity.this, MyWebView.class);
// 把需要传递的数据附加到intent中
intent.putExtra("Uri", "" + uri);
startActivity(intent);

}

}

@Override
public boolean onCreateOptionsMenu(final Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

}


MyWebView.java

package com.example.mywebview;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MyWebView extends Activity {

private WebView myWebView = null;
private String uri = new String("123");

@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.webview);

Intent intent = getIntent();
// 获取intent传送过来的变量
uri = intent.getStringExtra("Uri");
System.out.println("-------------->" + uri);
myWebView = (WebView) findViewById(R.id.myWebView);
// 设置能执行JavaScript脚本
myWebView.getSettings().setJavaScriptEnabled(true);
// 直接把uri路径所指的网页装载进来
myWebView.loadUrl(uri);
// 设置web视图,重写此方法返回true表明点击网页里面的链接还是在当前的webview里跳转
myWebView.setWebViewClient(new WebViewClient() {

@Override
public boolean shouldOverrideUrlLoading(final WebView view,
final String url) {
view.loadUrl(url);
return true;
}

});

}

@Override
// 设置返回上一页
public boolean onKeyDown(final int keyCode, final KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && myWebView.canGoBack()) {
myWebView.goBack();
return true;
}
return false;
}

}


还差最后一步了,使用WebView必然要用到网络,所以要设置网络的访问权限,具体是要在AndroidManifest.xml中设置的。

<uses-permission  android:name="android.permission.INTERNET"/>


这个例子很简单,就不做解释了,代码上的注释也很清楚了。

好,这样就完成了.....
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: