2010-09-02 107 views
2

我刚安装了SDKADT Eclipse plugin。我试图做的是一个简单的“Hello,World”程序。我正在使用2.2 (8) API。这里是我的代码:Android Hello World应用程序无法正常工作,模拟器上没有文字显示

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:安卓)没有显示只是一个空白屏幕,酷fonted “Android” 的印记。我基本上失踪了什么?

回答

3

是的,模拟器需要它的时间加载,但正如前面提到的,你的代码也有问题。

当你调用

setContentView(R.layout.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是一个非常安全的赌注,仍然给你很多玩,同时最大限度地提高你的目标受众。

+0

谢谢,伙计!有用和有趣的职位! – George 2010-09-06 08:35:48

2

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

+0

我确实在等待。事实上,我的临时PC非常慢(Athlon 1600)。无论如何,我确实需要等待一段时间 - 我感觉没有任何东西正在加载。不过,我会再试一次,并且等待这个时间更长的时间... – George 2010-09-02 18:12:03

+0

等待检查您的LogCat(eclipse - > view - > other - > android - > Logcat)。如果LogCat提供输出,您的模拟器仍在启动。 – WarrenFaith 2010-09-02 18:17:11

1

是的,等一下。仿真器可能需要花费几分钟的时间来加载,特别是如果您的机器较慢时...

+0

非常感谢!就在几秒钟前,它终于加载!下一次,我将更加关注我的控制台...... – George 2010-09-02 18:24:27

+0

您可能需要考虑在手机上启用USB调试,然后在每次运行时将应用推送到您的手机。我已经尝试过,并且更喜欢这个。 – 2012-10-20 01:39:37

1

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

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

谢谢!我会牢记这一点! – George 2010-09-02 18:30:14

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在this forum thread

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

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

0

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

0

调用

setContentView(R.layout.main); 

后,您完全没有必要再使用它设置texttextview。你可以像这样使用它。

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

它会工作。

相关问题