2

我刚刚安装了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”印记的空白屏幕外,什么也没有显示。我从根本上缺少什么?

4

7 回答 7

3

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

你打电话时

setContentView(R.layout.main);

您实际上是在说“去获取我制作的名为'main'的 XML 布局并显示它”

然后在你把它扔进去之后:

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

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

这并不是真正的破坏性错误,只是不理想。通常,您需要提前在 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 构建是一个非常安全的选择,并且在最大化目标受众的同时仍然可以为您提供很多东西。

于 2010-09-02T21:47:42.023 回答
2

稍等片刻。你看到的是模拟器启动。

于 2010-09-02T18:08:07.850 回答
1

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

TextView tv = (TextView)findViewById("textViewId");
tv.setText("Here goes the text!");
于 2010-09-02T18:22:29.967 回答
1

是的,请稍等。模拟器可能需要几分钟才能加载,特别是如果你的机器很慢......

于 2010-09-02T18:13:02.830 回答
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 }

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

此论坛主题中引用 shodhanshah :

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

只需按键盘上的主页,单击屏幕上的应用程序,然后单击您的应用程序名称。

于 2011-04-02T07:21:42.627 回答
0

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

于 2012-05-02T06:06:05.380 回答
0

打电话后

setContentView(R.layout.main); 

您无需再次使用它来设置texttextview。你可以像这样使用它。

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

它会起作用的。

于 2012-05-02T06:35:02.657 回答