从listactivity启动webview

时间:2015-03-01 10:50:19

标签: android webview

我正在尝试实现OnItemClickListener来为我的listview启动webview。每个feed项都有一个不同的url(从json解析),我想在webview中加载这个url。另外,我在MainActivity中收到“TextView无法解析为类型”的错误。 MainActivity的内容视图是activity_main.xml,而我在feed.xml中有TextView。应用程序不会崩溃,但是当我触摸Feed项时没有任何反应。我的MainActivity的一部分是`

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    listView = (ListView) findViewById(R.id.list);
    feedItems = new ArrayList<FeedItem>();

    listAdapter = new FeedListAdapter(this, feedItems);
    listView.setAdapter(listAdapter);

    listView.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            Intent i = new Intent(getApplicationContext(), WebActivity.class);

            String url = ((TextView) view.findViewById(R.id.txtUrl)).getText().toString();
            i.putExtra("url", url);
            startActivity(i);

        }

    });

.......

private void parseJsonFeed(JSONObject response) {
    try {
        JSONArray feedArray = response.getJSONArray("feed");

        for (int i = 0; i < feedArray.length(); i++) {
            JSONObject feedObj = (JSONObject) feedArray.get(i);

            FeedItem item = new FeedItem();
            item.setId(feedObj.getInt("id"));
            item.setName(feedObj.getString("name"));

            String image = feedObj.isNull("image") ? null : feedObj.getString("image");
            item.setImage(image);
            item.setStatus(feedObj.getString("status"));

            String feedUrl = feedObj.isNull("url") ? null : feedObj.getString("url");
            item.setUrl(feedUrl);

            feedItems.add(item);
        }`

我的WebActivity类是

  public class WebActivity extends Activity {

WebView web;

@SuppressLint("SetJavaScriptEnabled")
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    web = (WebView) findViewById(R.id.webview);
    web.setWebViewClient(new myWebClient());
    web.getSettings().setJavaScriptEnabled(true);
    web.loadUrl("url");
}

public class myWebClient extends WebViewClient {
    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {

        super.onPageStarted(view, url, favicon);
    }

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {


        view.loadUrl(url);
        return true;

    }
}


@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_BACK) && web.canGoBack()) {
        web.goBack();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}
}

3 个答案:

答案 0 :(得分:0)

WebActivity活动中,使用getIntent获取从上一个活动传递的url

web.getSettings().setJavaScriptEnabled(true);
Intent intent=getIntent();
String url;
if(intent !=null)
url=intent.getStringExtra("url");
web.loadUrl(url);

答案 1 :(得分:0)

使用以下代码获取点击项目的网址

String url = parent.getItemAtPosition(position).getUrl()

 Intent i = new Intent(getApplicationContext(), WebActivity.class);
               i.putExtra("url", url);
                startActivity(i);

在WebActivity中

 String url="";

      //In onCreate

        url = getIntent().getExtras().getString("url");
       web = (WebView)findViewById(R.id.webview);
        web.getSettings().setJavaScriptEnabled(true);
        web.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);
         web.loadUrl(url);

答案 2 :(得分:0)

我们的目标是在MainActivity中打开与您的feedItem相关联的WebActivity中的URL,我们必须将数据从MainActivity传递给我们的WebActivity,并且您正在使用它。通过发送带有意图的“url”将数据从MainActivity传递到WebActivity。

i.putExtra("url", url);

现在我们已将数据从MainActivity传递到WebActivity,我们必须处理从MainActivity发送的数据。

我们可以使用Intent对象上的getData()方法进行检索。可以通过getIntent()方法检索Intent对象,这里请确保intent不为null。

  Intent intent = getIntent();
  if (null != intent) {
    String stringURL = intent.getStringExtra("url");
    web.loadUrl(stringURL);
  }

像这样更新你的onCreate:

web.getSettings().setJavaScriptEnabled(true);

  Intent intent = getIntent();
  if (null != intent) {
    String stringURL = intent.getStringExtra("url");
    web.loadUrl(stringURL);
  }  

}