2013-12-10 25 views
0

當我開始我的主要活動中,我得到以下錯誤堆棧:獲取錯誤時動態添加視圖活動

12-10 01:46:41.257: E/AndroidRuntime(849): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.projetofinal_pesquisa_de_campo/br.domBosco.projetofinal_pesquisa_de_campo.MainActivity}: java.lang.NullPointerException 
12-10 01:46:41.257: E/AndroidRuntime(849): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) 
12-10 01:46:41.257: E/AndroidRuntime(849): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 
12-10 01:46:41.257: E/AndroidRuntime(849): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
12-10 01:46:41.257: E/AndroidRuntime(849): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 
12-10 01:46:41.257: E/AndroidRuntime(849): at android.os.Handler.dispatchMessage(Handler.java:99) 
12-10 01:46:41.257: E/AndroidRuntime(849): at android.os.Looper.loop(Looper.java:123) 
12-10 01:46:41.257: E/AndroidRuntime(849): at android.app.ActivityThread.main(ActivityThread.java:3683) 
12-10 01:46:41.257: E/AndroidRuntime(849): at java.lang.reflect.Method.invokeNative(Native Method) 
12-10 01:46:41.257: E/AndroidRuntime(849): at java.lang.reflect.Method.invoke(Method.java:507) 
12-10 01:46:41.257: E/AndroidRuntime(849): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
12-10 01:46:41.257: E/AndroidRuntime(849): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
12-10 01:46:41.257: E/AndroidRuntime(849): at dalvik.system.NativeStart.main(Native Method) 
12-10 01:46:41.257: E/AndroidRuntime(849): Caused by: java.lang.NullPointerException 
12-10 01:46:41.257: E/AndroidRuntime(849): at br.domBosco.projetofinal_pesquisa_de_campo.MainActivity.onCreate(MainActivity.java:46) 

我無法弄清楚爲什麼發生這種情況,搜查了幾個小時試圖解決這個。

這裏我MainActivity:

public class MainActivity extends Activity { 

    LinearLayout container; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
//  LeitorXml lxml = new LeitorXml(); 
//  try { 
//   Questionario questionario = lxml.getQuestionariosFromXml2(this); 
//  } catch (XmlPullParserException e) { 
//   // TODO Auto-generated catch block 
//   e.printStackTrace(); 
//  } 

     container = (LinearLayout) findViewById(R.id.svQuestionario); 

     LayoutInflater layoutInflater = 
     (LayoutInflater) getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     final View viewDinamica = layoutInflater.inflate(R.layout.campos_dinamicos, null); 
     //setContentView(R.layout.campos_dinamicos); 
     TextView lblPergunta = (TextView)viewDinamica.findViewById(R.id.lblCampoDinamico); 
     lblPergunta.setText("Uma Pergunta apenas"); 
     EditText txtPergunta = (EditText)viewDinamica.findViewById(R.id.txtCampoDinamico); 

     container.addView(viewDinamica); 


    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

} 

這裏是我的XML佈局配置文件:

activity_main.xml中:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity" > 

    <TextView 
     android:id="@+id/lblNomeQuestionario" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/hello_world" /> 

    <ScrollView 
     android:id="@+id/svQuestionario" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@id/lblNomeQuestionario" 
     android:layout_below="@id/lblNomeQuestionario" 
     android:layout_marginTop="18dp" > 

     <LinearLayout 
      android:id="@+id/container" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content"    
      android:orientation="vertical" > 
     </LinearLayout> 
    </ScrollView> 

</RelativeLayout> 

這裏我campos_dinamicos.xml:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" > 

    <TextView 
     android:id="@+id/lblCampoDinamico" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:text="Medium Text" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

    <EditText 
     android:id="@+id/txtCampoDinamico" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_below="@id/lblCampoDinamico"   
     android:ems="10" />  

</RelativeLayout> 

我試圖做這樣的例子: http://android-er.blogspot.com.br/2013/05/add-and-remove-view-dynamically.html

有人可以幫助我嗎?我很喜歡編程到android,所以也許這是一個非常簡單的錯誤!謝謝!

+1

「MainActivity」的第46行是什麼? –

+0

'TextView lblPergunta =(TextView)viewDinamica.findViewById(R.id.lblCampoDinamico); lblPergunta.setText(「Uma Pergunta apenas」); EditText txtPergunta =(EditText)viewDinamica.findViewById(R.id.txtCampoDinamico); container.addView(viewDinamica);' 我把它放在for循環中。第二次迭代它崩潰。有人知道爲什麼嗎? –

回答

3
<ScrollView 
    android:id="@+id/svQuestionario" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@id/lblNomeQuestionario" 
    android:layout_below="@id/lblNomeQuestionario" 
    android:layout_marginTop="18dp" > 
<LinearLayout 
    android:id="@+id/container" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"    
    android:orientation="vertical" > 
</LinearLayout> 

你是鑄造R.id.svQuestionarioLinearLayout。這將導致ClassCastException。 另外,您不能將另一個孩子添加到ScrollView。所以,要解決此問題,請使用

container = (LinearLayout) findViewById(R.id.container); 
+1

我的朋友,我很想付給你一杯啤酒,你無法想象我有多少努力使這項工作!你的回答是對的!萬分感謝! –