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