我在这行中找到了setContentView上找不到的源:
setContentView(R.layout.webview);
on onItemClick动作。 我有2个xml文件。 一个是列表项。看起来像那样:
list_item.xml
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp"
android:textSize="15sp" >
</TextView>
当用户点击列表中的项目时,我正在尝试这样做,它只会加载它。 我的xml是: webview.xml
<?xml version="1.0" encoding="utf-8"?>
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
这里是完整的代码。所有工作都很好,直到setContentView:
public class NewsActivity extends ListActivity {
WebView mWebView;
public ReadXML ReadXML=new ReadXML();
public ArrayList<String> ynetList =new ArrayList<String>();
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
for(int i=0;i<ReadXML.hadashotListItems.size();i++)
ynetList.add(ReadXML.hadashotListItems.get(i).title+"\n"+ReadXML.hadashotListItems.get(i).pubDate);
setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, ynetList));
View v=getListView() ;
ListView lv = getListView();
lv.setTextFilterEnabled(true);
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
// When clicked, show a toast with the TextView text
String s= ReadXML.hadashotListItems.get(position).link;
setContentView(R.layout.webview);
mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadUrl(s);
}
}
);
}}
答案 0 :(得分:3)
ListActivity
需要ListView
且ID为android.R.id.list
。在您创建活动时,一切都很好,因为您没有指定自己的内容视图,因此正在使用仅包含列表的默认内容视图。
现在,在您的setContentView
电话中,您的代码真正在说的是“现在我希望整个屏幕成为一个很棒的网页视图。”在执行此操作时,您违反了始终拥有ListActivity
的{{1}}要求。
您可以创建一个包含ListView
和 WebView
且ID为ListView
的布局文件,并使用onclick切换他们的可见性,也许听取硬件后退按钮切换回来。但我认为,只需让点击监听器启动一个新活动,只包含android.R.id.list
,这将是一种更简洁的方法:
WebView
然后,您可以将新的lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// When clicked, show a toast with the TextView text
String s = ReadXML.hadashotListItems.get(position).link;
Intent intent = new Intent(NewsActivity.this, WebActivity.class);
intent.putExtra("url", s);
startActivity(intent);
}
}
类设为WebActivity
作为其内容视图。按硬件后退按钮将自动完成该活动,并返回到您所在的列表。
答案 1 :(得分:1)
除了更改当前活动的整个布局之外,您不想创建一个加载您的网址的新活动吗?这似乎很尴尬。
此致 斯特凡