簡體   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