在setContentView上找不到源代码

时间:2011-08-31 07:41:21

标签: android

我在这行中找到了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);



        }
      }
      );
    }}

2 个答案:

答案 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)

除了更改当前活动的整个布局之外,您不想创建一个加载您的网址的新活动吗?这似乎很尴尬。

此致  斯特凡