Java程序不在Android中执行

时间:2012-12-07 00:00:36

标签: android

我正在安装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]);
        }
    }
}
}

问题出在哪里?

3 个答案:

答案 0 :(得分:2)

查找Activities。在Android中,您必须创建一个扩展Activity的类。等同于main()方法的是OnCreate()方法。在此方法中,您可以使用setContentView(layout id)

设置布局

答案 1 :(得分:2)

Android中不支持 ofcourse main()方法。

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
    }
}

答案 2 :(得分:1)

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

public static void main(String[] args)

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

Android 中,情况略有不同。

首先,课程演示必须扩展活动

public class Demo extends Activity

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

public void onCreate(Bundle savedInstanceState) { }

protected void onPause()  { }

protected void onResume() { } 

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