如何在同一个 Activity onCreate() 中执行 WebView 和 ListView?
Posted
技术标签:
【中文标题】如何在同一个 Activity onCreate() 中执行 WebView 和 ListView?【英文标题】:How to do a WebView AND ListView in the same Activity onCreate()? 【发布时间】:2011-01-15 04:50:54 【问题描述】:public class hello extends Activity, ListActivity
WebView main_webv;
ListView main_listv;
public static final int REFRESHLIST_ID = Menu.FIRST;
private Handler mHandler = new Handler();
private static final String SPLASH = "http://";
private static final String LIST_NAMES = "http://";
private class HelloWebViewClient extends WebViewClient
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
view.loadUrl(url);
return true;
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
main_webv = (WebView) findViewById(R.id.mainwebview);
main_webv.setWebViewClient(new HelloWebViewClient());
main_webv.getSettings().setjavascriptEnabled(true);
main_webv.getSettings().setSupportZoom(false);
main_webv.addJavascriptInterface(new HelloJavascriptInterface(),"hello");
main_webv.setWebChromeClient(new HelloWebChromeClient());
main_webv.loadUrl(SPLASH);
main_webv.setVisibility( 4 );
setContentView(R.layout.main_list);
main_listv = (ListView) findViewById(R.id.mainlistview);
如您所见,我首先创建了一个 webview。然后,我希望它立即消失。然后,我希望 Listview 出现。但问题是,如果我不做ListActivity,我就不能做Listview...但是我不能做Activity...
【问题讨论】:
【参考方案1】:您当然可以在没有ListActivity
的情况下使用ListView
。您还可以使用 WebView
和 ListActivity
。
【讨论】:
而Java不允许多重继承“所以公共类imhello扩展了Activity,ListActivity”不正确【参考方案2】:您可以查看我在您的另一个(可能相关)线程中发布的代码:here。 我将复制相同的代码: 这是我的布局 XML(weblister.xml):
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_
android:layout_
>
<ListView
android:id="@+id/list_view"
android:layout_
android:layout_
/>
<WebView
android:id="@+id/webview"
android:layout_
android:layout_
/>
</FrameLayout>
现在,我创建了一个 Activity,它的视图层次结构中同时包含 ListView 和 WebView,但其中只有一个是可见的:
public class WebAct extends Activity
@Override
protected void onCreate(Bundle savedInstanceState)
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.weblister);
//setup listview
ListView listView = (ListView) findViewById(R.id.list_view);
listView.setAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,
new String[]"One","Two")
);
// setup web view
WebView webView = (WebView) findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setSupportZoom(false);
webView.loadUrl("http://www.google.com");
// set visibility
listView.setVisibility(View.INVISIBLE);
webView.setVisibility(View.VISIBLE);
【讨论】:
【参考方案3】://main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
>
<RelativeLayout android:id="@+id/lister"
android:layout_
android:layout_
android:layout_alignParentTop="true">
<ListView
android:id="@+id/list_view"
android:layout_
android:layout_
/>
</RelativeLayout>
<RelativeLayout android:id="@+id/webviewer"
android:layout_
android:layout_
android:layout_below="@+id/lister">
<WebView
android:id="@+id/webview"
android:layout_
android:layout_
/>
</RelativeLayout>
//java文件
package list.View;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class ListViewActivity extends Activity
@Override
protected void onCreate(Bundle savedInstanceState)
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//setup listview
ListView listView = (ListView) findViewById(R.id.list_view);
listView.setAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,
new String[]"One","Two")
);
// setup web view
WebView webView = (WebView) findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setSupportZoom(false);
//webview.loadUrl("www.google.com");
webView.loadDataWithBaseURL("file:///android_asset/", "<img src=\"banner5.png\" height=\"98%\" width=\"100%\"/>", "text/html", "utf-8", null);
【讨论】:
以上是关于如何在同一个 Activity onCreate() 中执行 WebView 和 ListView?的主要内容,如果未能解决你的问题,请参考以下文章
关于Fragment.onCreate()中引用Activity.onCreate()创建的对象时的一个异常
关于Fragment.onCreate()中引用Activity.onCreate()创建的对象时的一个异常
为啥说安卓activity的onCreate()方法 只调用一次
怎样实现android 返回到上一个Activity并重新执行一次onCreate方法