我做了一個簡單的自定義browsaer在android中,與非常基本的控制器刷新和回來,併爲Url編輯文本,我想要的是,當用戶任何網址和點擊「去」按鈕,它應該在同一個瀏覽器中打開該頁面(不是默認瀏覽器)。我已經實現瞭如下:但我的「go」按鈕不工作。它始終顯示「未找到網頁」。所以請幫助我這個我的代碼是如下:自定義瀏覽器不工作在Android
subheader.java
package com.example.browserdemo;
import android.app.Activity;
import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
public class SubHeader extends LinearLayout implements OnClickListener {
private Context context;
public ImageView btn_back;
public TextView txtTitle;
public ImageView btn_reload;
public EditText et_url;
public Button go;
public SubHeader(Context context) {
super(context);
this.context = context;
init();
}
public SubHeader(Context context, AttributeSet attrs) {
super(context, attrs);
this.context = context;
init();
}
public void init() {
View view = LayoutInflater.from(this.context).inflate(
R.layout.uc_sub_header, this, true);
this.btn_back = (ImageView) view.findViewById(R.id.btn_back);
this.btn_reload = (ImageView) view.findViewById(R.id.btn_reload);
this.go = (Button) view.findViewById(R.id.go);
this.et_url = (EditText) view.findViewById(R.id.et_url);
this.btn_back.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if (v.getId() == R.id.btn_back) {
((Activity) this.context).finish();
}
}
}
main.java
package com.example.browserdemo;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.view.inputmethod.InputMethodManager;
import android.webkit.WebSettings.LayoutAlgorithm;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
public class MainActivity extends Activity {
WebView Browser;
public SubHeader subHeader;
public EditText et_url;
public Button go;
public ImageView btn_back, btn_reload;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_main);
Browser = (WebView) findViewById(R.id.webview);
this.subHeader = (SubHeader) findViewById(R.id.menu_header);
this.subHeader.btn_back.setVisibility(View.VISIBLE);
this.subHeader.btn_reload.setVisibility(View.VISIBLE);
btn_back = (ImageView) findViewById(R.id.btn_back);
btn_reload = (ImageView) findViewById(R.id.btn_reload);
Browser.loadUrl("http://www.google.com/");
et_url = (EditText) findViewById(R.id.et_url);
go = (Button) findViewById(R.id.go);
btn_reload.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Browser.reload();
}
});
go.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String theWebsite = et_url.getText().toString();
Browser.loadUrl(theWebsite);
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(Browser.getWindowToken(), 0);
}
});
btn_back.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (Browser.canGoBack()) {
Browser.goBack();
}
}
});
generateUI();
}
public void generateUI() {
new GetRealTimeUrl().execute();
}
public class GetRealTimeUrl extends AsyncTask<Void, Void, Void> {
public ProgressDialog mProgress;
@Override
protected void onPreExecute() {
super.onPreExecute();
this.mProgress = new ProgressDialog(MainActivity.this);
this.mProgress.setMessage("Please Wait...");
this.mProgress.setCancelable(false);
this.mProgress.setIndeterminate(false);
this.mProgress.show();
}
@Override
protected Void doInBackground(Void... arg0) {
Browser.loadUrl("http://www.google.com/");
Browser.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return false;
}
});
Browser.getSettings().setLayoutAlgorithm(LayoutAlgorithm.NORMAL);
Browser.getSettings().setLoadWithOverviewMode(true);
Browser.getSettings().setUseWideViewPort(true);
return null;
}
@Override
protected void onPostExecute(Void result) {
this.mProgress.hide();
this.mProgress.dismiss();
Message msg = new Message();
msg.arg1 = 1;
handler.sendMessage(msg);
super.onPostExecute(result);
}
}
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.arg1 == 1) {
}
}
};
}
您的代碼看起來不錯,請您提供您的日誌或一些更多的細節,以便問題更清楚。 –