我在此行的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为ListViewandroid.R.id.list。创建活动时,一切都很好,因为您没有指定自己的内容视图,因此使用的是仅包含列表的默认内容视图。

现在,在您的setContentView呼叫中,您的代码实际上是在说:“现在,我希望整个屏幕成为一个大型Web视图。”这样做会违反始终拥有ListActivityListView要求。

您可以创建一个包含WebView和ID为ListViewandroid.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/

10-10 01:50