繁体   English   中英

如何在 onCreate 方法之外初始化我的 RelativeLayoutButton?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM