1

これは非常に基本的な質問ですが、私自身では理解できないようです。Androidチュートリアルは練習用アプリの作成に役立ちますが、実際に何をしているのかはわかりません。(私はすでに彼らのチュートリアルを無事に完了しました。)私のすべての検索は、私の質問に答えることなく、あまり新しい質問を思いつきませんでした。だからここに私の初心者の質問があります:

「SupWorld」というテキストを表示したい。私は何が間違っているのですか?nullは間違いだと思いますが、実際に何があるべきかわかりません。"これは動作しません。そして、そこにnullがあると、setContextViewは存在しません。

package com.evorlor.testcode;

import android.widget.TextView;

public class SupWorld {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        String message = "Sup world.";

        TextView textView = new TextView(null);
        textView.setTextSize(40);
        textView.setText(message);

        setContentView(textView);

    }

}

私の問題は私のSupWorldクラスに到達することではありませんか?:

package com.evorlor.testcode;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Intent intent = new Intent(this, SupWorld.class);
        startActivity(intent);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

}
4

3 に答える 3

2

コードを次のように変更します。

public class SupWorld extends Activity {


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

         String message = "Sup world.";

        TextView textView = new TextView(this);
        textView.setTextSize(40);
        textView.setText(message);

        setContentView(textView);

    }

}

で上記のアクティビティ クラスを宣言しAndroidManifest.xmlます。

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity
        android:label="@string/app_name"
        android:name=".MainActivity" >
        <intent-filter >
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:label="@string/app_name"
        android:name=".SupWorld" >
    </activity>
</application>

これとは別に、Androidで最初のアプリケーションを作成するためのいくつかの優れたチュートリアルを見てください。これらを参照してください

http://www.mkyong.com/android/android-activity-from-one-screen-to-another-screen/

http://developer.android.com/training/basics/firstapp/index.html

于 2012-12-10T19:32:53.787 に答える
0

答えが与えられる代わりに、なぜ失敗したのかを説明するのが最善だと思います。基本的に、この行が原因です:

TextView textView = new TextView(null);

TextView のコンストラクターを見ると、Context が必要であることがわかります。コンテキストは、それぞれのアプリケーションにコンテンツを添付するために Android で使用されます。この場合、この TextView はこのアプリケーションに属しているため、TextView を使用するには Context が必要です。

正しい方法はコンテキストを渡すことです:

TextView textView = new TextView(this);

または

TextView textView = new TextView(getApplicationContext());

それぞれのコンテキストをアタッチすると、機能します。null は有効なコンテキストではなく、null ポインター例外 (NPE) をスローします。

詳細については、 TextViewのドキュメントを読んでみてください。

また

ρяσѕρєя K指摘されているように、発生した可能性のあるその他のエラーは、アクティビティが AndroidManifest.xml に登録されていないことです。これは、登録しようとしているアプリケーションの下にそのアクティビティを登録することをアプリケーションが認識できるようにするために必要です。

于 2012-12-10T19:39:14.360 に答える
0

最初の答えこの簡単な質問を検索

2番目の答え:

   public class SupWorld extends Activity {

    /**
     * @param args
     */
    public void onCreate(Bundle l) {
        // TODO Auto-generated method stub
        super.onCreate(l);

        String message = "Sup world.";

        TextView textView = new TextView(this);
        textView.setTextSize(40);
        textView.setText(message);

        setContentView(textView);

    }

  }

このアクティビティをメニフェストに追加して実行します

于 2012-12-10T19:34:33.190 に答える