2013-11-22 45 views
0

如何將String URL設置爲作爲Uri對象的Intent的數據?將URI的字符串設置爲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); 
} 

回答

1

不要通過URL的數組。您需要選擇每個清單上的項目,因此將代碼更改爲:

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

你只能一個String與方法Uri.parse(String uriString)解析,所以你不能把那裏的String數組。

0
intent.setData(Uri.parse(mUrls)); 

這看起來相當不對。 mUrls是一個字符串數組,你將它解析爲一個Uri,這是行不通的。 您必須將陣列中的每個字符串解析爲不同的Uris。

Atention:這不是真正的工作代碼,但僞代碼如下例子:

intent.setData(mUrls); 

你在哪裏得到的數據:

for (String s : mUrls){ 

Uri u = Uri.parse(s); 

}