2012-01-21 23 views
0

重複していない:私の質問は他のすべてのものより簡単です。android setContentViewが動作しない

私はandroid hello world tutorialに従うことを試みてきました。最初の例がうまく動作しません。

これは私のコードです:

package com.example.helloandroid; 

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

public class HelloAndroid 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"); 
     setContentView(tv); 
    } 
} 

あなたが見ることができるように、私はコピーして、チュートリアルの外に直接貼り付けます。 問題は、Hello、Androidを表示するのではなく、layout/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, HelloAndroid" 
    /> 
</LinearLayout> 

注意を要求したとして、私のmain.xmlを掲示。

+0

このファイルを作成した場合は、チュートリアルを線形に実行していないか、前の手順に戻ったことを意味します。プロジェクトをきれいにして再ビルドします。 –

+0

また、main.xmlも投稿できますか? – Jrom

+0

@Brian私はそのファイルを作成しませんでした。私は新しいプロジェクトを開始したときに自動的に作成されました。 – Benubird

答えて

0

試してください:最後にsetContentViewを行う必要はありません。そうすると、xmlの内容で上書きされます。

@Override  
public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState);  
     setContentView(R.layout.yourxmlfile);  
     TextView tv = (TextView)findViewById(R.id.helloText); 
     tv.setText("Hello, Android"); 
     } 




<TextView android:id="@+id/helloText" android:layout_width="fill_parent"  
    android:layout_height="wrap_content" 
     android:text="Hello World, HelloAndroid"  /> 
+0

助けにならない。 1)引数として使用する前にtvを定義しなければならない、2)定義とsettextの間に置いてみる、何もしなかった。 – Benubird

+0

申し訳ありません私の間違い。私は正しい構文で私の答えを更新しました。 – kosa

+0

私はそれがしたくないことを正確にやっていますか?これは、すでに行っていることですが、私はそれをしないようにする方法、つまりプログラムで生成するのではなくXMLファイルから読み込む方法を見つけようとしています。 – Benubird

1

なぜ同じテキストの2つのTextViewがありますか?あなたはこれをやってはいけません。もしあなたが1つを使うつもりならば、それを使ってはなりません。あるよう

あなたのXMLは結構ですが、あなたのアクティビティコードを変更する必要があります。HERESに

public class HelloAndroid extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
    } 
} 

あなたは何をしていたの説明

...あなたが動的のTextViewを構築し、設定された

TextViewへのContentViewは問題ありませんが、元の意図ではありませんでした。サンプルの本来の意図または当初の意図は、レイアウトファイルを使用し、そのアクティビティのcontentviewを、そのテキストビューだけでなくそのレイアウトファイルに設定することでした。

更新

OPが言ったことの代わりに、彼は動的TextViewのインスタンスを構築し、それを画面に適用したいん。このような場合は、あなたがする必要はあり...:

public class HelloAndroid extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     TextView tv = new TextView(this); 
     tv.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,ViewGroup.LayoutParams.FILL_PARENT)); 
     tv.setText("Hello, Android"); 
     setContentView(tv); 
    } 
} 

ここでの唯一の違いは、TextViewには、それが画面に表示されますどのように定義している性質を有していることです。ユーザーFILL_PARENTまたはWRAP_CONTENTのいずれかを使用できます。

+0

私はコンテンツを動的に設定できる必要があるので、xmlを使いたくありません。 「TextViewを動的に構築し、そのTextViewにContentViewを設定する」は私がやりたいことですが、どうやってそれを行うのか分かりません。 – Benubird

+0

エラーは何ですか?なぜmain.xmlを持っていますか?コンテンツを設定している場合、それは重要ではありません。しかしながら;そのTextViewのレイアウトパラメータを定義する必要があります。さもなければ、WindowManagerはそれを描画する方法を知らず、それは不合理になります。 – JoxTraex

+0

あなたがstackoverflowに投稿しているときには、エラーが何であるかを確認できるように、logcatエラーを投稿する必要があります。それは "そのクラッシュ"と言うほどではありません。理由を知る必要があります。この情報はログに記録されます。 – JoxTraex

0

アプリケーションでxmlファイルまたはレイアウトを設定していません。ビューを直接呼び出しています。レイアウトの下でビューを呼び出す必要があります。

構文:setContentView(R.layout.your xml file name);

0

logcatについての質問は、EclipseのDebugパースペクティブにあります。これは、システムとユーザーコードからのエラーメッセージのログです。

関連する問題