2

とをインストールしSDKましたADT 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を集中的に使用するアクションの1つであり、2回実行するのは無駄です。

ここで説明しているXMLレイアウトに慣れていない場合は、Eclipseでプロジェクトを開き、YourProjectName / res / layout/main.xmlに移動します。

最後に、2.2 APIに本当に必要なものがない限り、2.2のターゲットプラットフォーム用にビルドするのはおそらく賢明ではありません。「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()を2回呼び出すことは理想的ではありません。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 }

このページにアクセスしましたが、問題の解決策が見つかりませんでした。私はほとんどあきらめましたが、すべてが大丈夫だったので、それでも大きなものではないと感じました。エミュレータでhelloandroidテキストを取得できなかっただけです。他のすべてのことを正しく行ったときに小さなことがうまくいかないように見えるとき、それは非常にイライラします。

このフォーラムスレッドでshodhanshahを引用するには:

すべてが正常でしたが、エミュレーターはホーム画面にあり、アプリケーションはバックグラウンドで実行されていました。アプリケーション画面に切り替えたところ、アプリが正常に動作していることがわかりました。

キーボードでホームを押し、画面上のアプリをクリックしてから、アプリケーション名をクリックするだけです。

于 2011-04-02T07:21:42.627 に答える
0

その時も同じ問題が発生しました。エミュレーターがダウンロードされるまで待ってから、Androidのロックボタンをクリックし、円を時計回りに回転させて、Androidアプリケーションを開きます。次に、Androidのメインオプションをクリックすると、プロジェクト名をdinfできます。それをクリックすると、そこに出力が表示されます。

于 2012-05-02T06:06:05.380 に答える
0

電話した後

setContentView(R.layout.main); 

textに設定するために再度使用する必要はありませんtextview。このように使えます。

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

それが動作します。

于 2012-05-02T06:35:02.657 に答える