如何将String URL设置为Intent作为Uri对象的数据?
我哪里错了?
protected String[] mUrls = { "http://www.teamtreehouse.com", "http://developer.android.com", "http://www.github.com" };
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_custom_list);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mUrls);
setListAdapter(adapter);
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(mUrls));
startActivity(intent);
}
答案 0 :(得分:1)
您只能使用方法String
解析一个Uri.parse(String uriString)
,因此您无法将String数组放在那里。
答案 1 :(得分:1)
不要传递网址数组。您需要在每个列表项上选择一个,因此将代码更改为:
protected String[] mUrls = { "http://www.teamtreehouse.com", "http://developer.android.com", "http://www.github.com" };
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_custom_list);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mUrls);
setListAdapter(adapter);
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(mUrls[position]));
startActivity(intent);
}
答案 2 :(得分:0)
intent.setData(Uri.parse(mUrls));
这看起来很不对劲。 mUrls
是一个字符串数组,您将其解析为一个Uri
,这将无效。
您必须将Array中的每个String解析为不同的Uris。
注意:这不是真正的工作代码,而是伪代码,例如:
intent.setData(mUrls);
您收到数据的地方:
for (String s : mUrls){
Uri u = Uri.parse(s);
}