从 listactivity 启动 webview

Launch webview from listactivity

我正在尝试实施 OnItemClickListener 来为我的列表视图启动 Web 视图。每个提要项都有不同的 url(从 json 解析),我希望将此 url 加载到网络视图中。另外,我在 MainActivity 中收到 "TextView cannot be resolved to a type" 错误。 MainActivity 的内容视图是 activity_main.xml,而我的 TextView 是 feed.xml。该应用程序不会崩溃,但当我触摸提要项目时没有任何反应。我的 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 class 是

  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);
}
}

WebActivity Activity 中使用 getIntent 得到从之前的 Activity 传递过来的 url :

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

使用下面的代码获取点击项目url

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);

我们的目标是在 WebActivity 中打开 url,它与 MainActivity 中的 feedItems 相关联,我们必须将数据从 MainActivity 传递到我们的 WebActivity,而您正在正确处理它。通过发送 "url" 意图将数据从 MainActivity 传递到 WebActivity。

i.putExtra("url", url);

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

我们可以使用 Intent 对象上的 getData() 方法进行检索。 Intent 对象可以通过 getIntent() 方法获取,这里请确保 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);
  }  

}