Android Hello World应用程序无法正常工作,模拟器上不显示任何文本

时间:2010-09-02 18:04:00

标签: android adt

我刚刚安装了SDKADT Eclipse plugin。我想做的是一个简单的“Hello,World”计划。我正在使用2.2 (8) API。这是我的代码:

package com.example.hello;

import android.app.Activity;
import android.widget.TextView;
import android.os.Bundle;


    public class HelloWorld extends Activity {
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) 
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            TextView txt = new TextView(this);
            txt.setText("Hello, Android");
            setContentView(txt);

        }
    }

我的Eclipse控制台:

[2010-09-02 13:27:32 - HelloWorld] ------------------------------
[2010-09-02 13:27:32 - HelloWorld] Android Launch!
[2010-09-02 13:27:32 - HelloWorld] adb is running normally.
[2010-09-02 13:27:32 - HelloWorld] Performing com.example.hello.HelloWorld activity launch
[2010-09-02 13:27:32 - HelloWorld] Automatic Target Mode: Preferred AVD 'Android' is not available. Launching new emulator.
[2010-09-02 13:27:32 - HelloWorld] Launching a new emulator with Virtual Device 'Android'
[2010-09-02 13:28:12 - HelloWorld] New emulator found: emulator-5554
[2010-09-02 13:28:12 - HelloWorld] Waiting for HOME ('android.process.acore') to be launched...

在我的模拟器(5554:Android)上,没有显示任何内容,只有一个空白的屏幕,带有很酷的“Android”印记。我从根本上缺少什么?

7 个答案:

答案 0 :(得分:3)

是的,模拟器需要加载时间,但如前所述,您的代码中也存在问题。

致电时

setContentView(R.layout.main);

你实际上是在说“去获取我所做的'main'的XML布局并显示它”

然后你把它扔进去:

TextView txt = new TextView(this);
txt.setText("Hello, Android");
setContentView(txt);

在该代码中,您说“创建一个新的textview,设置其文本,然后显示我刚刚制作的新布局”

这不是真正的破坏性错误,只是不理想。通常,您希望在XML中提前创建布局或动态创建布局,但不能同时创建两者。绘制新视图是普通应用程序执行和执行两次操作最耗费CPU的操作之一,这只是浪费。

如果您不熟悉我们所讨论的XML布局,请在Eclipse中打开您的项目并导航到YourProjectName / res / layout / main.xml。

最后一点,构建2.2的目标平台可能并不明智,除非你确实需要2.2 API中的某些东西。您的“Hello,world”应用程序仅使用TextView,并且这些应用程序永远存在。构建2.2意味着只有2.2或更高版本的用户才能使用您的应用程序,目前这种应用程序排除了很多人(就像所有Droid Eris用户一样)。建立1.5是一个非常安全的赌注,仍然可以让你玩很多,同时最大化你的目标受众。

答案 1 :(得分:2)

等一会儿。你看到的是模拟器启动。

答案 2 :(得分:1)

是的,等一下。如果您的机器速度很慢,仿真器可能需要几分钟才能加载......

答案 3 :(得分:1)

另外,调用setContentView()两次并不理想。在main.xml中定义TextView,并从代码中引用文本字段。像这样:

TextView tv = (TextView)findViewById("textViewId");
tv.setText("Here goes the text!");

答案 4 :(得分:1)

我遇到了这个问题,并花了一整天的时间在网上寻找解决方案。 Eclipse控制台日志已在以下位置停止:

[2011-04-02 10:32:57 - MMarketSurvey] ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.okune.mmarketsurvey/.mmarketsurvey }

我访问了这个页面,但我没有得到任何问题的解决方案。我几乎放弃但仍觉得它不是什么大事,因为一切似乎都好,只是我无法在模拟器上得到你好的android文本。当你完成其他所有事情时,一件小事似乎不起作用,这是非常令人沮丧的。

引用this forum thread中的shodhanshah:

  

一切都很好但是模拟器在主屏幕上   应用程序在后台运行。我切换到应用程序   屏幕,发现应用程序运行正常。

只需在键盘上按家,点击屏幕上的应用,然后点击您的应用名称。

答案 5 :(得分:0)

我也遇到了同样的问题。等到它下载模拟器,然后单击android的锁定按钮,然后顺时针旋转圆圈,然后打开Android应用程序。然后,如果你单击android中的主选项,那么你可以点击你的项目名称,然后你会看到那里的输出。

答案 6 :(得分:0)

致电后

setContentView(R.layout.main); 

您无需再次使用它将text设置为textview。你可以像这样使用它。

TextView tv = new TextView(R.id.textview1);
tv.setText("Hello, Android");

它会起作用。