3

私はちょうど今日Java/Androidでコーディングを始めたので、私がここで完全にばかであるならすみません。

私は過去 1 時間、この問題に直面してきました。Google で検索しようとしましたが、答えが見つかりませんでした。

「変数名」と入力するだけでアクセスできるように、TextView を静的/変数として宣言するにはどうすればよいですか。私のコードのどこに?

別のアクティビティから TextView にアクセスしようとしているわけではありません。これらはすべて同じアクティビティにあります。

これは私のコードがどのように見えるかです(すべてmainactivity.javaにあります):

public class MainActivity extends Activity {

    TextView test = (TextView)findViewById(R.id.textView2);

    public void registermessage(View view) {
        test.setText("Test");
    }
}

これにより、Eclipse でエラーが発生することはありませんが、携帯電話で実行しようとすると強制的に閉じられます。

test をテキストビューとして宣言する行を public void に移動すると成功しますが、アクティビティ内の任意の void から変数 test を使用できるようにしたいと考えています。

ありがとうございました!

4

2 に答える 2

7

setcontentViewメソッドが呼び出された後に変数をインスタンス化する必要があるため、次のことを行う必要があります。

public class MainActivity extends Activity {

TextView test;

@Override
onCreate(Bundle s){
    ...
    setContentView(R.layout.yourLayout);
    test = (TextView)findViewById(R.id.textView2);
}


public void registermessage(View view) {

    test.setText("Test");
}
于 2013-06-10T16:56:18.600 に答える
2

アクティビティの変数として宣言し、 を呼び出した後に初期化しますsetContentView()。のテキストを設定するだけの場合は、関数に View パラメーターを渡す必要はありませんTextView

public class MainActivity extends Activity {

    private TextView test;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_launch);
        test = (TextView)findViewById(R.id.textView2);
        registermessage();
    }

    public void registermessage() {    
        test.setText("Test");
    }
于 2013-06-10T16:54:21.827 に答える