我在此行的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);
}
}
);
}}
最佳答案
ListActivity
需要ID为ListView
的android.R.id.list
。创建活动时,一切都很好,因为您没有指定自己的内容视图,因此使用的是仅包含列表的默认内容视图。
现在,在您的setContentView
呼叫中,您的代码实际上是在说:“现在,我希望整个屏幕成为一个大型Web视图。”这样做会违反始终拥有ListActivity
的ListView
要求。
您可以创建一个包含WebView
和ID为ListView
的android.R.id.list
的布局文件,并使用onclick切换其可见性,还可以听一下“硬件后退”按钮进行后退。但是我认为,仅使点击监听器启动一个仅包含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
类将R.layout.webview
设置为其内容视图。按下硬件后退按钮将自动完成该活动,并将您带回到您所在的列表。关于android - 在setContentView上找不到源,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7253951/