3

我今天才开始在 java/android 中编码,如果我在这里完全是个白痴,请原谅。

过去一个小时我一直面临这个问题,我试图用谷歌搜索,但找不到任何答案。

如何将 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 作为 textview 的行移动到公共 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()。如果您只是设置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 回答