2 Stimmen

Android Hello World Anwendung funktioniert nicht, kein Text wird auf dem Emulator angezeigt

Ich habe gerade die SDK y el ADT Eclipse plugin . Ich habe versucht, ein einfaches "Hello, World"-Programm zu erstellen. Ich verwende die 2.2 (8) API . Hier ist mein Code:

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);

        }
    }

Meine Eclipse Konsole:

[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...

Und auf meinem Emulator (5554:Android) wird nichts angezeigt außer einem leeren Bildschirm mit einem coolen "Android"-Aufdruck in Schriftart. Was vermisse ich grundsätzlich?

3voto

David Perry Punkte 1276

Ja, der Emulator braucht seine Zeit zum Laden, aber wie bereits erwähnt, haben Sie auch ein Problem in Ihrem Code.

Wenn Sie anrufen

setContentView(R.layout.main);

Sie sagen im Wesentlichen: "Holen Sie sich das XML-Layout namens 'main', das ich erstellt habe, und zeigen Sie es an".

Und im Nachhinein werfen Sie das ein:

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

In diesem Code sagen Sie: "Erstellen Sie eine neue Textansicht, legen Sie den Text fest und zeigen Sie dann das neue Layout an, das ich gerade erstellt habe.

Es ist nicht wirklich destruktiv fehlerhaft, nur nicht ideal. Normalerweise sollten Sie Ihr Layout entweder im Voraus in XML oder dynamisch erstellen, aber nicht beides. Das Zeichnen einer neuen Ansicht ist eine der rechenintensivsten Aktionen, die eine durchschnittliche Anwendung durchführt, und es zweimal zu tun ist einfach Verschwendung.

Wenn Sie mit dem XML-Layout, von dem wir sprechen, nicht vertraut sind, öffnen Sie Ihr Projekt in Eclipse und navigieren Sie zu YourProjectName/res/layout/main.xml.

Eine letzte Sache, es ist wahrscheinlich nicht klug, für eine Zielplattform von 2.2 zu bauen, es sei denn, es gibt etwas in der 2.2 API, die Sie wirklich wirklich brauchen. Ihre "Hello, world"-App verwendet nur eine TextView, und die gibt es schon ewig. Für 2.2 zu bauen bedeutet, dass nur Benutzer mit 2.2 oder höher deine App benutzen können, was im Moment viele Leute ausschließt (wie alle Droid Eris Benutzer). Die Entwicklung für 1.5 ist eine ziemlich sichere Sache und gibt dir immer noch eine Menge Spielraum, während du deine Zielgruppe maximierst.

2voto

nmichaels Punkte 47432

Warten Sie eine Weile. Was Sie sehen, ist das Hochfahren des Emulators.

1voto

Exile Punkte 8503

Ja, warte ein bisschen. Der Emulator kann bis zu ein paar Minuten zum Laden brauchen, vor allem, wenn du einen langsamen Rechner hast...

1voto

hanspeide Punkte 2609

Außerdem ist es nicht ideal, setContentView() zweimal aufzurufen. Definieren Sie Ihre TextView in main.xml, und verweisen Sie auf das Textfeld in Ihrem Code. Etwa so:

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

1voto

Ich hatte genau dieses Problem und verbrachte einen ganzen Tag im Netz auf der Suche nach der Lösung. Eclipse Konsole log hatte bei gestoppt:

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

Ich habe diese Seite besucht, aber ich habe keine Lösung für das Problem gefunden. Ich habe fast aufgegeben, aber immer noch das Gefühl, es ist nicht etwas Großes, weil alles schien ok, es ist nur, dass ich nicht die hallo Android Text auf dem Emulator bekommen konnte. Es ist sehr frustrierend, wenn eine kleine Sache nicht zu funktionieren scheint, wenn Sie jede andere Sache richtig gemacht haben.

Um Shodhanshah zu zitieren in dieses Forumsthema :

Alles war in Ordnung, aber der Emulator war auf dem Startbildschirm und Anwendung lief im Hintergrund. Ich wechselte zum Anwendungs Bildschirm und stellte fest, dass die Anwendung einwandfrei lief.

Drücken Sie einfach die Home-Taste auf der Tastatur, klicken Sie auf dem Bildschirm auf Apps und dann auf den Namen Ihrer Anwendung.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X