2012-06-08 52 views
0

我试图在这个网站的许多其他问题,但今天他们都不是有帮助的,我似乎有其他人的作品,但每一次我打一次发送(当我想相同的语法我的文本字段更新)我的应用程序崩溃,只是,我已经尝试了很多不同的语法为setText()方法,但没有奏效。.setText()崩溃我的Android应用

感谢所有帮助提前

这是我的主类

package com.example.myapp; 

import android.app.Activity; 
import java.io.IOException; 
import java.util.ArrayList; 

import android.app.Activity; 
import android.content.DialogInterface; 
import android.content.DialogInterface.OnClickListener; 
import android.os.Bundle; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 

import org.apache.http.HttpResponse; 
import org.apache.http.HttpStatus; 
import org.apache.http.client.*; 
import org.apache.http.client.methods.*; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.apache.http.util.EntityUtils; 

public class TestprojectsActivity extends Activity { 

    private int index; 
    private int QsClicked = 0; 
    private ArrayList<String> categories = new ArrayList<String>(); 
    private ArrayList<Button> buttons = new ArrayList<Button>(); 
    Button b1; 
    Button b2; 
    Button b3; 
    Button b4; 
    Button changer; 
    private int Qselected; 
    TextView txt; 
    EditText edit; 
    private ArrayList<String> questions = new ArrayList<String>(); 
    private int qnum = 0; 

    // updates all the buttons so we can see more categories 
    public void updateButtons(View v){ 
     for(int i = 0; i < 4; i++){ 
       if(index >= categories.size()){ 
        index = 0; 
       } 
       buttons.get(i).setText(categories.get(index)); 
       index++; 
      } 
    } 

    public void Q1(View v){ 
     setContentView(R.layout.sub); 
     Qselected = index; 
     //send(null); 
    } 

    public void Q2(View v){ 
     setContentView(R.layout.sub); 
     Qselected = (index+1); 
     //send(null); 
    } 

    public void Q3(View v){ 
     setContentView(R.layout.sub); 
     Qselected = (index+2); 
     //send(null); 
    } 

    public void Q4(View v){ 
     setContentView(R.layout.sub); 
     Qselected = (index+3); 
     //send(null); 
    } 

    public void send(View v){ 
     edit.setText("WHY ISNT THIS WORKING?"); 
     if(qnum < questions.size()){ 
      txt.setText("i work!"); 
      qnum++; 
     } 
     else{ 
      qnum = 0; 
      System.exit(0); 
     } 
    } 


/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    index = 0; 
    b1 = (Button) findViewById(R.id.B1); 
    buttons.add(b1); 
    b2 = (Button) findViewById(R.id.B2); 
    buttons.add(b2); 
    b3 = (Button) findViewById(R.id.B3); 
    buttons.add(b3); 
    b4 = (Button) findViewById(R.id.B4); 
    buttons.add(b4); 
    txt = (TextView) findViewById(R.id.textView1); 
    edit = (EditText) findViewById(R.id.editText2); 
    categories.add("dumb questions"); 
    categories.add("smart questions"); 
    questions.add("hi there, what is your name?"); 
    questions.add("what did you have for breakfast today?"); 
    questions.add("how old are you?"); 
    questions.add("what color is your hair?"); 
    updateButtons(null); 
} 
} 

这是我的主XML

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/layoutrowtop" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" > 
<Button 
    android:id="@+id/B4" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="B4" 
    android:onClick="Q4" /> 
<Button 
    android:id="@+id/B3" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="B3" 
    android:onClick="Q3" /> 
<Button 
    android:id="@+id/B2" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="B2" 
    android:onClick="Q2" /> 
<Button 
    android:id="@+id/B1" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="B1" 
    android:onClick="Q1" /> 
<Button 
    android:id="@+id/Button05" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:text="More Categories" 
    android:onClick="updateButtons" /> 

</LinearLayout> 

这是我的子XML(我用它,所以我可以有另一种布局)

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 




    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="0.22" 
     android:text="Question" 
     /> 


    <EditText 
     android:id="@+id/editText2" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="0.51" 
     android:ems="10" 
     android:inputType="text" /> 


    <Button 
     android:id="@+id/send" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="0.08" 
     android:text="Send" 
     android:onClick="send" /> 

    </LinearLayout> 
+1

线

edit = (EditText) findViewById(R.id.editText2); 

您可以发布您的logcat异常堆栈 – Tarun

+0

[为什么空指针异常?](http://samir-mangroliya.blogspot.in/p/why-nullpointerexception-occures- in.html) –

回答

0

您的活动正在使用的main.xml作为其布局,并且不具有ID editText2一个TextView。在sub.xml中放置这样的视图不会创建视图;布局文件需要充气并设置为活动的内容视图。更改布局后请致电findViewById,一切都应该良好。

0

在活动的onCreate方法,你设置的内容视图R.layout.main和你搜索,你要设置的文字TextView。因为TextView不在该布局中(位于R.layout.sub中,而不在R.layout.main中),所以它将为null,并且在设置文本时将获得NullPointerException,尽管您将内容视图设置为包含该新布局的TextView (你已经寻找它在onCreate方法,以便参考与空初始化)。

的解决方案是搜索TextView后在设置新的内容视图(R.layout.sub),例如:

public void send(View v){ 
     txt = (TextView) findViewById(R.id.textView1); 
     edit = (EditText) findViewById(R.id.editText2); 
     edit.setText("WHY ISNT THIS WORKING?"); 
     if(qnum < questions.size()){ 
      txt.setText("i work!"); 
      qnum++; 
     } 
     else{ 
      qnum = 0; 
      System.exit(0); 
     } 
    } 

答案同样的事情,于是就选择了Edittext

0

AS在OnCreate中时得到调用main.xml中为你的布局XML现在也没有R.id.editText2所以当时编辑将是空..........

将这个在

public void Q1(View v){ 
     setContentView(R.layout.sub); 
     Qselected = index; 
edit = (EditText) findViewById(R.id.editText2); <-----------------here in Q1 Q2 Q3 Q4 
     //send(null); 
    } 
+0

s ame for txt =(TextView)findViewById(R.id.textView1); –