0

Android のボタンから Web ページを開こうとしていますが、うまく動作しません。非常に簡単に見えるチュートリアルを見つけましたが、秘訣は、別のアクティビティ クラスで作成されたオブジェクトから取得した 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);

        }

プロジェクトは気象観測所のリストを読み込んでいます。適切なゲッター/セッターを備えた 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>

これらをコンストラクター/ゲッター/セッターを使用してステーションクラスに解析しています。前のアクティビティから、ユーザーはこれらのステーションの 1 つを選択します。次のアクティビティでは、この xml の名前、ID などの要素が表示されます。しかし、ボタンからステーションの URL を開きたいのですが、方法がわかりません。

4

2 に答える 2

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

が URL と共に返されない場合は、wangyif2 が既に述べたようhttp://に、で使用する前に追加する必要があります。Intentこれが理にかなっていることを願っていますが、与えられた情報でできる最善のことです。

于 2013-04-22T01:56:27.420 に答える
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"
}
于 2013-04-22T01:17:05.773 に答える