注意:這個問題已經解決了應付給我抓我自己的愚蠢的Android - LinearLayout中不添加自定義視圖
我想一個自定義的類添加到LinearLayout
,但由於某些原因,我不斷收到一個NullPointerException
。
這是與另外交易的方法:
protected void onPostExecute(String results) {
System.out.println("ON POST EXECUTE : " + results);
try {
if(!results.equals(((MessageBlurb)container.getChildAt(0)).getMessage())){
try {
container.removeViewAt(30);
for (int i = 29; i > 0; i--) {
container.addView(container.getChildAt(i-1), i);
container.removeViewAt(i-1);
}
container.addView(new MessageBlurb(getApplicationContext(), results, Color.BLACK), 0);
} catch (NullPointerException e) {
// TODO: handle exception
}
}
}
catch (Exception e) {
MessageBlurb mb = new MessageBlurb(getApplicationContext(), results, Color.BLACK);
mb.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
System.out.println(mb);
container.addView(mb, 0);
}
}
其中MessageBlurb
延伸ViewGroup
,因爲我有一個TextView
的MessageBlurb
內。
的MessageBlurb
類看起來是這樣的:
public MessageBlurb(Context context, String message, int color){
super(context);
myTV = new TextView(context);
this.addView(myTV);
myTV.setText(message);
System.out.println("THE BLURB IS CREATED");
this.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
System.out.println("YOU CLIKED THE BLURB");
}
});
}
我打印出來的描述mb
,它給了我一個內存位置。還有的是,logcat的錯誤指向該行:
container.addView(mb, 0);
的container
本身是在activity_main.xml
文件中定義的LinearLayout
。它通過一行代碼初始化:
container = (LinearLayout)findViewById(R.id.container);
在XML文件中的佈局ID也被稱爲container
有人可以看到我在做什麼錯? 謝謝!
如果你要在該行一個空指針異常,這意味着容器是空,所以你需要告訴我們在哪兒多數民衆贊成intialized。否則通過發佈完整的堆棧跟蹤來澄清你的帖子。 – gsingh2011
如果這是在你的Activity的onCreate覆蓋中,你可能沒有在這個函數的開頭調用super.onCreate(...)。在沒有UI元素存在的情況下,您也可以在Activity的構造函數中執行此操作。 –
@ gsingh2011和Mickael我編輯了我的問題。 – Jeeter