更新时间:2023-12-05 07:54:46
好了,所以我想我已经回答了你的问题here
Ok so I thought I've already answered to your question here
此外,你似乎想复制类似的问题here和here
Besides, you seem to like to replicate similar questions here and here
就像我已经告诉你了,你可以通过创建一个接受URL作为意向额外的活动acomplish这一点。
Like I've already told you, you can acomplish this by creating an activity that accepts an url as an extra of an intent.
以你的code为基地启动:
Taking your code as a base start:
Browser.java
Browser.java
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class Browser extends Activity {
private WebView webview;
private String URL;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.browser);
Bundle extras = getIntent().getExtras();
if (extras == null) {
URL = "http://www.evonytools.org/";
} else {
this.URL = extras.getString("URL");
}
getWebView();
}
public void getWebView() {
webview = (WebView) findViewById(R.id.webview);
webview.setWebViewClient(new HelloWebViewClient());
webview.getSettings().setJavaScriptEnabled(true);
webview.loadUrl(this.URL);
}
private class HelloWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) {
webview.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
}
布局/ broswer.xml
layout/broswer.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
>
<WebView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/webview"
/>
</LinearLayout>
Main.java
Main.java
public class Main extends TabActivity{
private TabHost tabHost;
private EditText addressBar;
private final static String DEFAULT_URL = "http://www.evonytools.org/";
private int z = 0;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tabs_main);
this.tabHost = getTabHost(); // The activity TabHost
this.addressBar = (EditText) findViewById(R.id.address_bar);
this.addressBar.setText(DEFAULT_URL);
ImageButton addBtn = (ImageButton) findViewById(R.id.add_btn);
addBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
addMethod();
}
});
Intent openBrowser = new Intent();
openBrowser.setClass(this, Browser.class);
openBrowser.putExtra("URL", DEFAULT_URL);
tabHost.addTab(tabHost.newTabSpec("Main").setIndicator(getHost(DEFAULT_URL)).setContent(openBrowser));
}
private void addMethod() {
String webSiteURL = validateURL(addressBar.getText().toString().trim());
String webSiteName = getHost(webSiteURL);
Intent openBrowser = new Intent();
openBrowser.setClass(this, Browser.class);
openBrowser.putExtra("URL", webSiteURL);
tabHost.addTab(tabHost.newTabSpec(webSiteName + Integer.toString(z)).setIndicator(webSiteName).setContent(openBrowser));
++z;
}
private void deleteMethod() {
// Since we can't really delete a TAB
// We hide it
int position = tabHost.getCurrentTab();
if (position != 0 ) {
tabHost.getCurrentTabView().setVisibility(8);
tabHost.setCurrentTab(0);
}
}
// Inflates menu when "menu Key" is pressed
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
return true;
}
// This method is called once the menu is selected
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.add:
addMethod();
break;
case R.id.delete:
deleteMethod();
break;
}
return true;
}
private String validateURL(String url) {
StringBuffer urlB = new StringBuffer();
// checks if addressBar has a valid URL
// you can add stuff here in order to validate
// this is just an example
if (url.startsWith("http://")) {urlB.append(url);} else {urlB.append("http://");}
try {
URL urlTry = new URL(urlB.toString());
return urlB.toString();
} catch (MalformedURLException e) {
return "http://www.google.com/";
}
}
private String getHost(String url) {
try {
URL urlTry = new URL(url);
return urlTry.getHost().replace("www.", "").replace(".com", "").replace(".org", "").replace(".net", "");
} catch (MalformedURLException e) {
return "Browser";
}
}
}
tabs_main.xml
tabs_main.xml
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="5dp">
<TabWidget
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:tag="tabPane"
/>
<RelativeLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/address_bar"
android:layout_width="270px"
android:layout_height="50px"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
/>
<ImageButton
android:id="@+id/add_btn"
android:layout_width="50px"
android:layout_height="50px"
android:src="@android:drawable/ic_menu_add"
android:background="@android:color/transparent"
android:layout_toRightOf="@id/address_bar"
/>
</RelativeLayout>
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="2dp" />
</LinearLayout>
希望我没有做功课。