0

なぜsetContentView(R.layout.main)最後の行で使用できないのsetContentView(tv)ですか?これを説明してください。

package com.mue.helloworld;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class HelloWorldActivity extends Activity 

{
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        TextView tv = new TextView(this);

        tv.setText("Hello, Android i am suvankar");

        setContentView(tv);
    }

}
4

3 に答える 3

2

R.layout.main (xml ファイル) で textview を定義する必要があります。このファイルには、アクティビティ内のオブジェクトの情報が含まれています。Eclipse を使用している場合は、メイン ファイルを開くだけでテキストビューをドラッグ アンド ドロップできます。(フォルダー res -> レイアウト -> main.xml)

次に、プログラムでそれを呼び出す必要があります。

setContentView(R.layout.main);
TextView tv = (TextView) findViewById(R.id.tv); //<-- yo have to use the same ID that is in the main.xml file

そして、テキストを設定できます。これらはすべて oncreate 関数で行います。

tv.setText("Hello, Android i am suvankar");

お役に立てば幸いです。ここで私の最初の応答です

于 2012-06-24T19:21:03.730 に答える
2

setContentView()で 2 回呼び出すべきではありませんonCreate。電話setContentView(R.layout.main)または電話のいずれかでsetContentView(tv)、両方ではありません。TextView私は 2 つのうちの最初の方を好みますが、レイアウト XML で が宣言されていることを確認する必要があります。

于 2012-06-24T19:25:30.093 に答える
0

まず、setContentView()メソッドが何をするのかを理解してみましょう。基本的 setContentView()に、UI を に配置しますActivity。アクティビティの UI コンポーネントを作成するには、xml リソース (R.layout.main など) を使用するか、コードで UI コンポーネントのインスタンスを取得してアクティビティに動的に追加します。例えば

TextView tv = new TextView(this);

tv.setText("Hello, Android i am suvankar");

setContentView(tv);

あなたの場合、のインスタンスを作成し、TextView tvそれにテキストを設定して、それをアクティビティに追加しました。ここでは、使用する必要はありませんsetContentView(R.layout.main)。ただし、layouts フォルダーに次のような xml レイアウト (main.xml) がある場合:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="Hello World"
    />
</LinearLayout>

作成したアプリケーションの下部に、Hello Worldと書かれsetContentView(R.layout.main)た黒い画面が表示されます。これは、ここでインスタンスを作成し、テキストを設定したが、 を呼び出してアクティビティに配置せず 、まったく異なるレイアウト リソースを追加したためです。を使用 し、最後に追加する と、最後に UI リソースを置き換えたため、"Hello, Android i am suvankar" の代わりにHello Worldが再び表示されます。ただし、xml リソースを追加して「setContentView(R.layout.main)」を呼び出すのを忘れた場合、コンパイラは、指定された xml リソースが見つからないというエラーを発行します。TextViewsetContentView(tv)setContentView(tv)onCreate()setContentView(R.layout.main)

于 2012-06-26T12:07:30.987 に答える