Android:在 Activity 中声明视图组件的最佳做法是什么?
Android: What is best practice for declaring View components in an Activity?
android 中的典型 activity。
public class MainActivity extends AppCompatActivity {
/* Should I declare view components here? */
TextView textView;
Button button;
RecyclerView recyclerView;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
/* And then create them here */
textView = (TextView) findViewById(R.id.textview);
button = (Button) findViewById(R.id.button);
recyclerView = (RecyclerView) findViewById(R.id.recyclerview);
/* Or is it better to declare and create them like this? */
Spinner spinner = (Spinner) findViewById(R.id.spinner);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
}
}
在这两种情况下,组件都将按预期工作并且可以按预期使用。但是,在您的主 activity 或片段中声明这样的视图时,是否应该遵循编程实践或模式?还是根本不重要。
视情况而定!
如果您需要访问onCreate
之外的视图组件,在class的其他方法中,这些方法不是从onCreate
调用的,那么,您可以选择存储引用将此类视图组件作为实例变量。这对于文本视图、列表视图等可能必须从 class.
的其他方法更新的内容来说是正确的。
如果你不需要onCreate
之外的视图组件,那么就没有必要将它们设为实例变量。这通常适用于按钮,一旦您定义了 setOnClickListener
,您可能不需要再次访问该组件。
很少有开发人员喜欢为所有视图组件声明实例变量。有些人甚至将它们声明为 static
变量,并从其他 classes 访问它们 - 甚至滥用它在活动之间共享数据。在多成员团队中,这种约定很难维护——一些变量被声明为成员变量,而另一些则被遗漏了。很多时候,某些成员变量永远不会在 onCreate
之外访问,这会增加代码的混乱度。
看你写什么。我将对此进行 总结。
如果您在 onCreate 之外声明视图,您将能够在 activity/fragment.
中的任何方法中使用这些视图
但是如果你在像onCreate这样的方法中声明视图,你将无法在任何其他不同的方法中再次引用这些视图。它只能在您编写视图声明的同一方法中引用。
但是,根据我的编码经验,我总是喜欢在 onCreate 之外声明它们。它具有更多的可访问性,并且您不会丢失任何东西。
拇指规则,如果要在其他函数中使用,请在class中声明
android 中的典型 activity。
public class MainActivity extends AppCompatActivity {
/* Should I declare view components here? */
TextView textView;
Button button;
RecyclerView recyclerView;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
/* And then create them here */
textView = (TextView) findViewById(R.id.textview);
button = (Button) findViewById(R.id.button);
recyclerView = (RecyclerView) findViewById(R.id.recyclerview);
/* Or is it better to declare and create them like this? */
Spinner spinner = (Spinner) findViewById(R.id.spinner);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
}
}
在这两种情况下,组件都将按预期工作并且可以按预期使用。但是,在您的主 activity 或片段中声明这样的视图时,是否应该遵循编程实践或模式?还是根本不重要。
视情况而定!
如果您需要访问onCreate
之外的视图组件,在class的其他方法中,这些方法不是从onCreate
调用的,那么,您可以选择存储引用将此类视图组件作为实例变量。这对于文本视图、列表视图等可能必须从 class.
如果你不需要onCreate
之外的视图组件,那么就没有必要将它们设为实例变量。这通常适用于按钮,一旦您定义了 setOnClickListener
,您可能不需要再次访问该组件。
很少有开发人员喜欢为所有视图组件声明实例变量。有些人甚至将它们声明为 static
变量,并从其他 classes 访问它们 - 甚至滥用它在活动之间共享数据。在多成员团队中,这种约定很难维护——一些变量被声明为成员变量,而另一些则被遗漏了。很多时候,某些成员变量永远不会在 onCreate
之外访问,这会增加代码的混乱度。
看你写什么。我将对此进行 总结。
如果您在 onCreate 之外声明视图,您将能够在 activity/fragment.
中的任何方法中使用这些视图
但是如果你在像onCreate这样的方法中声明视图,你将无法在任何其他不同的方法中再次引用这些视图。它只能在您编写视图声明的同一方法中引用。
但是,根据我的编码经验,我总是喜欢在 onCreate 之外声明它们。它具有更多的可访问性,并且您不会丢失任何东西。
拇指规则,如果要在其他函数中使用,请在class中声明