2012-02-14 10 views
0

私は以前はアンドロイド用に開発した経験がありましたが、6ヶ月後にもう一度起動して、ほとんどを忘れました。私は今、私の開発を行うためにmacbookを使用しており、Eclipse、Android SDK、AVDをもう一度セットアップしなければならなかったので、私は何かを混乱させてしまうことを心配しています。Android - シンプルなプログラムだがまだ苦労している

私の画面に「Hello World」と表示されるデフォルトのアクティビティで新しいプロジェクトを開始すると、アプリケーションは正常に動作します。次に、新しいTextViewのテキストを変更する2つのボタンを入れようとしました。しかし、私はtextViewの部分を含めるたびに私はランタイムエラーが発生します。私がそれをコメントアウトすると、アプリケーションは動作しますが、明らかに何も起こりません。私が読んできたチュートリアルに基づいて、これは適切な場所とtextViewの宣言/作成方法ですが、何が間違っているのか理解できません。助言がありますか?

[編集]私は迷惑をかけていました。私は、TextViewの代わりにmytextをフィールドにすることができ、それが機能することを発見しました。だから私のonCreate()では、私は置く

mytext = (TextField)findViewById(R.id.TextView1); 

しかし、それは正しいことをするように見えません。

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 

public class IntroActivity extends Activity { 

    TextView myText = (TextView)findViewById(R.id.textView1); 
    //i've tried this with final added on to it as well (recommended by eclipse) 

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

     setButtonClickListener(); 
    } 

    private void setButtonClickListener() { 
     Button button1 = (Button)findViewById(R.id.button1); 
     Button button2 = (Button)findViewById(R.id.button2); 

     button1.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       myText.setText("Hello"); 
      } 
     }); 
     button2.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
      // myText.setText("Goodbye"); 
      } 
     }); 
      } 



    } 
+0

あなたの 'TextView myText'にタイプを追加する必要があります。これは' private'または 'final'を意味します。ファイナルはプロジェクト全体を検索するので、ボックスに一意の名前がある場合にのみ使用してください。 – gkiar

答えて

3

この:

TextView myText = (TextView)findViewById(R.id.textView1); 

を分離する必要があります。宣言が同じ場所にする必要があります:

private TextView myText; 

しかし割り当ては唯一setContentView後に来る必要があります:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    myText = (TextView)findViewById(R.id.textView1); 

これはsetContentView以前から行われている、のDalvikは取るためにどのレイアウトから認識していませんidと一致するビューR.id.textView1

+0

うわー、私はそのような基本的なことを逃したとは信じられません。だから私は、アクティビティのテキストビューを宣言し、後でそれを割り当てたいと思う。ご協力いただきありがとうございます。 – willmer