[英]How can I initialize my RelativeLayoutButton outside of onCreate method?
我正在创建一个登录页面,其中包含一系列用于其他活动的按钮。 LandingActivity 扩展了自定义 BaseActivity。 这些按钮有自己的相对LandingButton
,带有图像和一些带有LandingButton
类的文本来处理它们。 现在,只要我的按钮都在 onCreate 中声明和自定义,一切都可以正常工作。 我想再划分一点。
我曾尝试在 onCreate 之前声明它们,在我的 initViews() 方法中初始化它们,并像使用任何标准视图一样在 onCreate 中调用它。
public class LandingActivity extends BaseActivity {
LandingButton bMyData = new LandingButton(this, R.id.myDataButton);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_layout)
//initViews();
这导致 NullPointerException 将我指向LandingButton.java
public LandingButton(Context context, int id)
{
super(context);
if (!(context instanceof Activity))
return;
我还尝试将 LandingButton 更改为引用 BaseActivity 而不是 Activity:
if (!(context instanceof BaseActivity))
return;
同样的错误。 应用程序在调试过程中一旦点击 onCreate 就会崩溃,而没有给我太多事情要做。
理想情况下,我想在 onCreate 之前声明我的 LandingButtons,并在 initViews() 中编辑它们以尽可能保持我的 onCreate 方法整洁。
您不能在onCreate
之前初始化您的视图,因为这是您的活动开始的地方。
在您已经初始化活动之前,您不能在您的活动类中初始化某些内容。
因此,如果您想将初始化提取到方法中,只需在onCreate
调用此方法:
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.layout);
initViews();
}
从文档:
在活动开始时调用。 这是大多数初始化应该去的地方:调用 setContentView(int) 来扩充 Activity 的 UI,使用 findViewById(int) 以编程方式与 UI 中的小部件交互
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.