-1

我正在android中做一个天气项目。该信息来自给定的 URL,该 URL 是静态的并包含城市列表。例如:HTTP://myexample/info/?cities显示城市列表。HTTP://myexample/info/?tokyo 将显示:日本东京。

我已经完成了布局以写下要执行的城市名称:

xmlns:tools=["http://schemas.android.com/tools"]
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".Meteo" >
<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:paddingTop="40dp"
    android:weightSum="4">

    <LinearLayout 
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:layout_weight="3">              

        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/soleil" />
    </LinearLayout> 
            <LinearLayout 
            android:orientation="horizontal"
        android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:weightSum="4">

            <EditText
                android:id="@+id/editText1"
                android:layout_width="170dp"
                android:layout_height="wrap_content"
                android:ems="10" >
            <requestFocus />
            </EditText>
            <Button
                android:id="@+id/button1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/button" />

</LinearLayout>

但是 Java 程序不执行。仅执行布局:

public class Demo {

public static void main(String[] args) {

    // URL
    String url = "$HTTP://myexample/info/?cities$";

    // Weather information

    String weather = "Tokyo, Japan#15.5#Sun ##";

    // Get the city name
    String city = url.substring(url.indexOf("?") + 1).trim();

    System.out.println(city);
    // Check the weather of the city: 15.5#Sun
    // Remove city name
    // Remove last #

    if (weather.toLowerCase().contains(city.toLowerCase())) {

        // Get condition: 

        String condition = weather.substring(weather.indexOf("#") + 1,
                weather.length() - 2);
        System.out.println(condition);
        // Split with # sign and you have a list of conditions

        String[] information = condition.split("#");
        for (int i = 0; i < information.length; i++) {

            System.out.println(information[i]);
        }
    }
}
}

哪里有问题?

4

3 回答 3

2

查找活动。在 Android 中,您必须创建一个扩展 Activity 的类。方法的等价物main()OnCreate()方法。在这种方法中,您可以设置布局setContentView(layout id)

于 2012-12-07T00:06:44.340 回答
2

当然main()方法在android中是不支持的。

public static void main(String[] args) {

      // .... 

}

改为使用Activity

public class MyActivity extendsActivity
{

    @Override
    protected void onCreate(Bundle saveInstance)
    {
       // This method will be called first
       super.onCreate(saveInstance);
       // Your definition
    }
}
于 2012-12-07T00:11:09.650 回答
1

您的主要问题是您试图将Android应用程序作为Java应用程序运行。

public static void main(String[] args)

Java应用程序的标准入口点。

Android中,情况有些不同。

首先,类Demo必须扩展Activity

public class Demo extends Activity

其次,您必须实现特殊方法,这些方法在应用程序生命周期的特定时刻被调用,最重要的是:

public void onCreate(Bundle savedInstanceState) { }

protected void onPause()  { }

protected void onResume() { } 

您应该在Android Developers Site查看相应的文档。

于 2012-12-07T00:11:08.437 回答