【问题标题】:How do I declare a TextView variable so that I can use it anywhere?如何声明一个 TextView 变量以便我可以在任何地方使用它?
【发布时间】:2018-11-06 17:11:19
【问题描述】:

我今天才开始在 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。

谢谢!

【问题讨论】:

  • 向我们展示完整的代码。您尚未将内容设置为活动。所以你找不到viewbid

标签: android


【解决方案1】:

你必须在调用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");
}

【讨论】:

    【解决方案2】:

    将其声明为您的活动的变量,并在调用setContentView() 后对其进行初始化。如果您只是设置 TextView 的文本,则无需在函数中传递 View 参数。

    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");
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-27
      • 2014-11-08
      • 1970-01-01
      • 1970-01-01
      • 2020-11-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多