我正在尝试实现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);
}
}
答案 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);
}
}