package com.pocketdigi.webview;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.net.ConnectivityManager;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.KeyEvent;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class main extends Activity {
/** Called when the activity is first created. */
WebView wv;
ProgressDialog pd;
Handler handler;
//检测url
private boolean isOpenNetwork() {
ConnectivityManager connManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
if (connManager.getActiveNetworkInfo() != null) {
return connManager.getActiveNetworkInfo().isAvailable();
}
return false;
}
private void initMoreGames() {
String URL_MOREGAMES = "http://www.baidu.com";
WebView mWebView = (WebView) findViewById(R.id.view_gamesort);
if (mWebView != null) {
mWebView.requestFocus();
WebSettings webSettings = mWebView.getSettings();
if (webSettings != null) {
webSettings.setJavascriptEnabled(true);
webSettings.setCacheMode(MODE_PRIVATE);
webSettings.setDefaultTextEncodingName("utf-8");
}
// 判断网络是否可用
if(isOpenNetwork() == true) {
mWebView.loadUrl(URL_MOREGAMES);
} else {
AlertDialog.Builder builder = new AlertDialog.Builder(MoreGamesActivity.this);
builder.setTitle("没有可用的网络").setMessage("是否对网络进行设置?");
builder.setPositiveButton("是", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent = null;
try {
String sdkVersion = android.os.Build.VERSION.SDK;
if(Integer.valueOf(sdkVersion) > 10) {
intent = new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS);
}else {
intent = new Intent();
ComponentName comp = new ComponentName("com.android.settings", "com.android.settings.WirelessSettings");
intent.setComponent(comp);
intent.setAction("android.intent.action.VIEW");
}
MoreGamesActivity.this.startActivity(intent);
} catch (Exception e) {
Log.w(TAG, "open network settings failed, please check...");
e.printStackTrace();
}
}
}).setNegativeButton("否", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
finish();
}
}).show();
}
} else {
Log.w(TAG, "mWebView is null, please check...");
}
}
//检测url end
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
init();//执行初始化函数
loadurl(wv,"http://baidu.com ");
}
public void init(){
// Progress
pd=new ProgressDialog(main.this);
pd.setProgressStyle(ProgressDialog.STYLE_SPINNER);
pd.setMessage("数据载入中,请稍候!");
// Show/Hide message
handler=new Handler(){
public void handleMessage(Message msg)
{
//定义一个Handler,用于处理下载线程与UI间通讯
if (!Thread.currentThread().isInterrupted())
{
switch (msg.what)
{
case 0:
pd.show();//显示进度对话框
break;
case 1:
pd.hide();//隐藏进度对话框,不可使用dismiss()、cancel(),否则再次调用show()时,显示的对话框小圆圈不会动。
break;
}
}
super.handleMessage(msg);
}
};
// WebView
wv=(WebView)findViewById(R.id.wv);
wv.getSettings().setJavascriptEnabled(true);//可用JS
wv.setScrollBarStyle(0);//滚动条风格,为0就是不给滚动条留空间,滚动条覆盖在网页上
wv.setWebViewClient(new WebViewClient(){
public boolean shouldOverrideUrlLoading(final WebView view, final String url) {
loadurl(view,url);//载入网页
return true;
}//重写点击动作,用webview载入
});
wv.setWebChromeClient(new WebChromeClient(){
public void onProgressChanged(WebView view,int progress){//载入进度改变而触发
if(progress==100){
handler.sendEmptyMessage(1);//如果全部载入,隐藏进度对话框
}
super.onProgressChanged(view, progress);
}
});
}
public boolean onKeyDown(int keyCode, KeyEvent event) {//捕捉返回键
if ((keyCode == KeyEvent.KEYCODE_BACK) && wv.canGoBack()) {
wv.goBack();
return true;
}else if(keyCode == KeyEvent.KEYCODE_BACK){
ConfirmExit();//按了返回键,但已经不能返回,则执行退出确认
return true;
}
return super.onKeyDown(keyCode, event);
}
public void ConfirmExit(){//退出确认
AlertDialog.Builder ad=new AlertDialog.Builder(main.this);
ad.setTitle("退出");
ad.setMessage("是否退出商城?");
ad.setPositiveButton("是", new DialogInterface.OnClickListener() {//退出按钮
@Override
public void onClick(DialogInterface dialog, int i) {
// TODO Auto-generated method stub
main.this.finish();//关闭activity
}
});
ad.setNegativeButton("否",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int i) {
//不退出不用执行任何操作
}
});
ad.show();//显示对话框
}
public void loadurl(final WebView view,final String url){
new Thread(){
public void run(){
handler.sendEmptyMessage(0);
view.loadUrl(url);//载入网页
}
}.start();
}
}
你的代码是从网上拷贝的吧,很多地方要改成和你的工程对应的。你那个类叫main(以后最好第一个字母要大写),你得把诸如MoreGamesActivity.this, 诸如 R.id.XXXXX或者R.layout.XXXX改成你自己工程里的东西。。。
main.java 如下
明白你的意思了,首先跟你说下,你刚启动一个项目的时候首先是去你的MainActivity类里面,然后去MainActivity的OnCreat()方法里面,所以呢你可以在OnCreat()方法里面去实现,但是呢一般我们操作这些东西最好放到一个线程里面,所以你可以永Handler进行线程处理防止请求服务器时间过长程序死掉。
package com.pocketdigi.webview;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.net.ConnectivityManager;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.KeyEvent;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class main extends Activity {
/** Called when the activity is first created. */
WebView wv;
ProgressDialog pd;
Handler handler;
//检测url
private boolean isOpenNetwork() {
ConnectivityManager connManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
if (connManager.getActiveNetworkInfo() != null) {
return connManager.getActiveNetworkInfo().isAvailable();
}
return false;
}
private void initMoreGames() {
String URL_MOREGAMES = "http://www.baidu.com";
WebView mWebView = (WebView) findViewById(R.id.view_gamesort);
if (mWebView != null) {
mWebView.requestFocus();
WebSettings webSettings = mWebView.getSettings();
if (webSettings != null) {
webSettings.setJavascriptEnabled(true);
webSettings.setCacheMode(MODE_PRIVATE);
webSettings.setDefaultTextEncodingName("utf-8");
}
// 判断网络是否可用
if(isOpenNetwork() == true) {
mWebView.loadUrl(URL_MOREGAMES);
} else {
AlertDialog.Builder builder = new AlertDialog.Builder(MoreGamesActivity.this);
builder.setTitle("没有可用的网络").setMessage("是否对网络进行设置?");
builder.setPositiveButton("是", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent = null;
try {
String sdkVersion = android.os.Build.VERSION.SDK;
if(Integer.valueOf(sdkVersion) > 10) {
intent = new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS);
}else {
intent = new Intent();
ComponentName comp = new ComponentName("com.android.settings", "com.android.settings.WirelessSettings");
intent.setComponent(comp);
intent.setAction("android.intent.action.VIEW");
}
MoreGamesActivity.this.startActivity(intent);
} catch (Exception e) {
Log.w(TAG, "open network settings failed, please check...");
e.printStackTrace();
}
}
}).setNegativeButton("否", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
finish();
}
}).show();
}
} else {
Log.w(TAG, "mWebView is null, please check...");
}
}
//检测url end
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
init();//执行初始化函数
loadurl(wv,"http://baidu.com ");
}
public void init(){
// Progress
pd=new ProgressDialog(main.this);
pd.setProgressStyle(ProgressDialog.STYLE_SPINNER);
pd.setMessage("数据载入中,请稍候!");
// Show/Hide message
handler=new Handler(){
public void handleMessage(Message msg)
{
//定义一个Handler,用于处理下载线程与UI间通讯
if (!Thread.currentThread().isInterrupted())
{
switch (msg.what)
{
case 0:
pd.show();//显示进度对话框
break;
case 1:
pd.hide();//隐藏进度对话框,不可使用dismiss()、cancel(),否则再次调用show()时,显示的对话框小圆圈不会动。
break;
}
}
super.handleMessage(msg);
}
};
// WebView
wv=(WebView)findViewById(R.id.wv);
wv.getSettings().setJavascriptEnabled(true);//可用JS
wv.setScrollBarStyle(0);//滚动条风格,为0就是不给滚动条留空间,滚动条覆盖在网页上
wv.setWebViewClient(new WebViewClient(){
public boolean shouldOverrideUrlLoading(final WebView view, final String url) {
loadurl(view,url);//载入网页
return true;
}//重写点击动作,用webview载入
});
wv.setWebChromeClient(new WebChromeClient(){
public void onProgressChanged(WebView view,int progress){//载入进度改变而触发
if(progress==100){
handler.sendEmptyMessage(1);//如果全部载入,隐藏进度对话框
}
super.onProgressChanged(view, progress);
}
});
}
public boolean onKeyDown(int keyCode, KeyEvent event) {//捕捉返回键
if ((keyCode == KeyEvent.KEYCODE_BACK) && wv.canGoBack()) {
wv.goBack();
return true;
}else if(keyCode == KeyEvent.KEYCODE_BACK){
ConfirmExit();//按了返回键,但已经不能返回,则执行退出确认
return true;
}
return super.onKeyDown(keyCode, event);
}
public void ConfirmExit(){//退出确认
AlertDialog.Builder ad=new AlertDialog.Builder(main.this);
ad.setTitle("退出");
ad.setMessage("是否退出商城?");
ad.setPositiveButton("是", new DialogInterface.OnClickListener() {//退出按钮
@Override
public void onClick(DialogInterface dialog, int i) {
// TODO Auto-generated method stub
main.this.finish();//关闭activity
}
});
ad.setNegativeButton("否",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int i) {
//不退出不用执行任何操作
}
});
ad.show();//显示对话框
}
public void loadurl(final WebView view,final String url){
new Thread(){
public void run(){
handler.sendEmptyMessage(0);
view.loadUrl(url);//载入网页
}
}.start();
}
}
报错 为 无法解析 view_gamesort,或者它不是字段
以及
无法解析 view_gamesort,或者它不是字
段
MoreGamesActivity 无法解析为类
型
此行的多个标记
- TAG cannot be resolved to a
variable
- 无法解析 Log
伙计,你直接把别个代码copy过来肯定不行啊,MoreGamesActivity 改成你自己的main ,view_gamesort是一个ID ,你需要在xml中定义一个webview