2013-03-01 4 views
0

Добрый вечер я пытаюсь просто добавить кнопку в существующий макет ... После прочтения некоторых других ответов, которые я попытался это:Добавление компонентов динамически макета

public void addButton(View v) 
{ 
     Button cb=new Button(this); 

     try { 
     LinearLayout l= (LinearLayout) findViewById(R.layout.main); 
      //cb.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)); 
      l.addView(cb,new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)); 
    } catch (Exception e) { 
     Log.d("EXCEPTION", e.getMessage(),e.getCause()); 
     e.printStackTrace(); 
    } 
} 

тогда я получил исключения нулевого указателя в качестве следующим образом:

03-01 22:34:03.967: W/System.err(7047): java.lang.NullPointerException 
03-01 22:34:03.967: W/System.err(7047): at custom.component.app.CustomComponentActivity.addButton(CustomComponentActivity.java:49) 
03-01 22:34:03.967: W/System.err(7047):  at java.lang.reflect.Method.invokeNative(Native Method) 
03-01 22:34:03.967: W/System.err(7047):  at java.lang.reflect.Method.invoke(Method.java:511) 

Может кто-нибудь сказать мне, что это то, что я даже не использовать потоки

ответ

0

это вызвано линии:

LinearLayout l= (LinearLayout) findViewById(R.layout.main) 

findViewById() Используется для поиска видов внутри макета. Вы использовали R.layout.main по ошибке. Измените R.layout.main на R.id.<linearlayout> - замените <linearlayout> на идентификатор, который вы указали LinearLayout в своем XML (строка android:id="@+id/...").

+0

WOW !!! Вы шутите? Это сработало просто: ') Вы не знаете, сколько времени я потратил на это. Огромное спасибо :)))) –

+0

Я хотел проголосовать за ваш ответ, но я не могу (требуется 15 репутаций) –