我正在尝试从Android中的按钮打开一个网页,但却无法让它发挥作用。我找到了一个看起来很简单的教程,但诀窍是我试图显示一个从另一个活动类中创建的对象中获取的URL。我正在使用的代码是标准的OnClickListener:
private void addListeneronButton() {
// TODO Auto-generated method stub
button1 = (Button) findViewById(R.id.stationHistory);
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent browserIntent =
new Intent(Intent.ACTION_VIEW, Uri.parse(//need help here));
startActivity(browserIntent);
}
该项目正在阅读气象站列表。我有一个具有适当的getter / setter的Station类,因此Url已经存储。我只是不知道从这里访问的适当命令。我认为它会像Uri.parse(station.get_url)一样容易,但那只是提示我创建局部变量......有没有人有任何建议?
<station>
<station_id>NFNA</station_id>
<state>FJ</state>
<station_name>Nausori</station_name>
<latitude>-18.05</latitude>
<longitude>178.567</longitude>
<html_url>http://weather.noaa.gov/weather/current/NFNA.html</html_url>
<rss_url>http://weather.gov/xml/current_obs/NFNA.rss</rss_url>
<xml_url>http://weather.gov/xml/current_obs/NFNA.xml</xml_url>
</station>
<station>
<station_id>KCEW</station_id>
<state>FL</state>
<station_name>Crestview, Sikes Airport</station_name>
<latitude>30.79</latitude>
<longitude>-86.52</longitude>
<html_url>http://weather.noaa.gov/weather/current/KCEW.html</html_url>
<rss_url>http://weather.gov/xml/current_obs/KCEW.rss</rss_url>
<xml_url>http://weather.gov/xml/current_obs/KCEW.xml</xml_url>
</station>
<station>
<station_id>KDTS</station_id>
<state>FL</state>
<station_name>Destin, Ft. Walton Beach Airport</station_name>
<latitude>30.4</latitude>
<longitude>-86.47</longitude>
<html_url>http://weather.noaa.gov/weather/current/KDTS.html</html_url>
<rss_url>http://weather.gov/xml/current_obs/KDTS.rss</rss_url>
<xml_url>http://weather.gov/xml/current_obs/KDTS.xml</xml_url>
</station>
我正在使用构造函数/ getter / setter将它们解析为Station Class。从上一个活动中,用户选择其中一个站。在下一个活动中,它显示来自此xml的name,id等元素。但现在我想从一个按钮打开电台网址,我不确定如何。
答案 0 :(得分:2)
我想我现在看到你说的是问题,虽然你真的没说清楚。你有这个
private void addListeneronButton() {
// TODO Auto-generated method stub
button1 = (Button) findViewById(R.id.stationHistory);
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent browserIntent =
new Intent(Intent.ACTION_VIEW, Uri.parse(station.get_url);
startActivity(browserIntent);
}
并且它告诉您station.get_url
不是变量,因此您需要创建一个变量。 get_url
如果是方法,则应为get_url()
。如果您的课程为Station
(大写“S”),那么您可以使用Station.get_url()
访问该课程。但是,您可能需要传入某个参数来告诉它要获取哪个URL。这是假设它是static
方法。如果不是,那么您需要创建Station
类的实例并调用方法
Station myStation = new Station(); //pass parameters here to constructor as needed
String address = myStation.get_url(); // object
然后,您可以在address
中使用Intent
。
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(address));
startActivity(browserIntent);
如果http://
没有与url一起传回,则必须在Intent
中使用它之前附加它,正如wangyif2已经说明的那样。我希望这是有道理的,但我能用所提供的信息做到最好。
答案 1 :(得分:1)
在进行URI解析时,尝试将http://放在字符串之前:
private void addListeneronButton() {
button1 = (Button) findViewById(R.id.stationHistory);
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent browserIntent = new Intent(Intent.ACTION_VIEW,
Uri.parse(Station.getHtmlUrl("NFNA"));
startActivity(browserIntent);
}
}
车站类:
public static String getHtmlUrl(String station) {
//return the full URL here based on station
//eg. "http://weather.noaa.gov/weather/current/NFNA.html"
}