簡體   English   中英

您如何在Android中動態創建按鈕?

[英]How do you dynamically create buttons in Android?

我正在構建我的第一個android應用程序,並且試圖用最終將要從SQLLite數據庫填充的按鈕填充屏幕。 我不知道如何動態創建按鈕。現在我的主要活動只有線性布局。 當我嘗試通過以下代碼動態創建按鈕時:

LinearLayout mainLayout = (LinearLayout)findViewById(R.id.mainLayout);

Button addButton =new Button(this);
addButton.setText("add");

mainLayout.addView(addButton);

我的應用程序啟動,然后意外退出,LogCat引發以下錯誤:

11-11 15:34:21.622: E/AndroidRuntime(16734): FATAL EXCEPTION: main
11-11 15:34:21.622: E/AndroidRuntime(16734): Process:
com.brycemacinnis.easycook, PID: 16734
11-11 15:34:21.622: E/AndroidRuntime(16734): java.lang.RuntimeException:
Unable to start activity  ComponentInfo{com.brycemacinnis.easycook/com.brycemacinnis.easycook.MainActivity
}:java.lang.NullPointerException: Attempt to invoke virtual method 'void
android.widget.LinearLayout.addView(android.view.View)' on a null object reference

我嘗試了多種在線查找方法來創建按鈕,但是每次都發生相同的事情。 反正有解決此錯誤的方法嗎? 最終,我希望按鈕進入scrollView。

您創建按鈕的代碼是正確的

Button addButton = new Button(this);

這里的問題是什么告訴您:

android.widget.LinearLayout.addView(android.view.View)' on a null object reference

來自這行:

mainLayout.addView(addButton);

為什么?

由於此行代碼返回null:

findViewById(R.id.mainLayout);

為什么返回null?

可能是因為您做得太早了(例如,在Fragment中的onCreate中),或者您為setContentView(R.layout.XXX)調用提供了錯誤的布局ID(如果您處於活動狀態)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM