Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android/Java试图找出将变量声明放在何处_Java_Android_Variables - Fatal编程技术网

Android/Java试图找出将变量声明放在何处

Android/Java试图找出将变量声明放在何处,java,android,variables,Java,Android,Variables,我是Android开发的新手,到目前为止,我一直在想如何让教程代码在我正在构建的应用程序中工作。我正在努力理解在哪里声明变量,以及为什么复制和粘贴一些最终会出错的教程 例如,我正在尝试学习如何使用ViewFlipper。从这一点来看,Eclipse告诉我,当我在OnClick中使用vf时,它不是一个变量。所以当我移动这条线时: ViewFlipper vf = (ViewFlipper)findViewById(R.id.viewFlipper1); 在我的OnCreate方法之上,它就可以工

我是Android开发的新手,到目前为止,我一直在想如何让教程代码在我正在构建的应用程序中工作。我正在努力理解在哪里声明变量,以及为什么复制和粘贴一些最终会出错的教程

例如,我正在尝试学习如何使用ViewFlipper。从这一点来看,Eclipse告诉我,当我在OnClick中使用vf时,它不是一个变量。所以当我移动这条线时:

ViewFlipper vf = (ViewFlipper)findViewById(R.id.viewFlipper1);

在我的OnCreate方法之上,它就可以工作了。为什么我看到这么多在OnCreate中声明变量的教程,为什么它对我不起作用?在哪里申报是合适的?我了解封装和继承的基础知识,所以OnCreate是否与任何其他方法一样,并且其中声明的任何变量都与其他方法隔离?关于我的按钮,我应该在我的类中声明,但在OnCreate之外声明吗?

OnCreate与任何其他方法一样,所有关于封装和变量范围的java规则都适用于它。在onCreate方法之外,将ViewFlipper变量声明为类成员。但是,正如教程所说,在onCreate方法中实例化它


android中的所有功能都与java中的一样。这里遵循java的所有编程规则。

onCreate与任何其他方法一样,所有关于封装和变量范围的java规则都适用于它。在onCreate方法之外,将ViewFlipper变量声明为类成员。但是,正如教程所说,在onCreate方法中实例化它


android中的所有功能都与java中的一样。这里遵循java的所有编程规则。

这是因为在onCreate方法之外,变量是类的全局变量。Aka,类中的任何方法都可以访问这些变量。在onCreate中声明变量时,这些变量只能在onCreate方法的括号内访问。您应该在onCreate方法之外声明变量,并在onCreate方法内初始化它们:

ViewFlipper vf;

onCreate(....)

vf = (ViewFlipper) findViewById(R.id.viewFlipper1);

然后设置onClickListener,这是因为在onCreate方法之外,变量对于类是全局的。Aka,类中的任何方法都可以访问这些变量。在onCreate中声明变量时,这些变量只能在onCreate方法的括号内访问。您应该在onCreate方法之外声明变量,并在onCreate方法内初始化它们:

ViewFlipper vf;

onCreate(....)

vf = (ViewFlipper) findViewById(R.id.viewFlipper1);
然后设置你的侦听器

为什么我看到这么多教程中都有在
OnCreate
中声明的变量,为什么它对我不起作用?

在方法内部或外部声明变量实际上归结为您希望与变量关联的类型。
在方法内部,在打算使用变量之前,需要注意声明变量

哪里是申报的合适地点?

在何处声明变量的适当性完全取决于您希望在何处使用它。如果只打算在方法中使用变量,则在类级别声明变量是不明智的。在方法中声明变量,当类中的许多其他方法想要访问它时,您最终将变量传递给每个方法,这也是不明智的。所以现在,你可以考虑:

  • 在类中声明变量-当类中的许多方法需要访问它时
  • 在方法中声明变量-当只有方法可用于变量时
  • 我想补充一点,12不是可以盲目应用的通用规则-但要开始,您可以遵循它们,直到您找出与变量范围、访问规范和生存期相关的更深层次的细微差别

    这里我并不是在谈论访问说明符,因为它们值得详细了解,您可以从中获得。我也没有在这里讨论实例变量和类变量的区别,因为您最好参考官方文档,比如

    我了解封装和继承的基础知识,
    onCreate
    与任何其他方法一样,在其中声明的任何变量都与其他方法隔离?

    没错

    关于我的按钮,我应该在类内声明那些按钮,但在onCreate之外声明这些按钮吗?

    Android中的UI组件通常需要多种方法才能访问<代码>文本视图,
    按钮
    ,等等-通常有需要在不同时间、不同方法更改的状态-因此最好在类级别声明它们

    您应该更喜欢在类级别声明UI变量的另一个重要原因是,您减少了让Android框架为每个方法调用创建UI变量的开销。只要您的
    活动
    实例处于活动状态,框架就会保留UI组件/变量

    为什么我看到这么多教程中都有在
    OnCreate
    中声明的变量,为什么它对我不起作用?

    在方法内部或外部声明变量实际上归结为您希望与变量关联的类型。
    在方法内部,在打算使用变量之前,需要注意声明变量

    哪里是申报的合适地点?

    在何处声明变量的适当性完全取决于您希望在何处使用它。如果只打算在方法中使用变量,则在类级别声明变量是不明智的。在方法中声明变量,当类中的许多其他方法想要访问它时,您最终将变量传递给每个方法,这也是不明智的。所以