Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java .setText()使我的android应用程序崩溃_Java_Android_Xml_Mobile - Fatal编程技术网

Java .setText()使我的android应用程序崩溃

Java .setText()使我的android应用程序崩溃,java,android,xml,mobile,Java,Android,Xml,Mobile,今天,我在这个网站上尝试了许多其他问题,但没有一个是有用的,我似乎有相同的语法,适用于其他人,但每次我点击send(当我想更新文本字段时),我的应用程序就崩溃了,我尝试了一系列不同的语法,用于setText()方法,但没有任何效果 提前谢谢你的帮助 这是我的主课 package com.example.myapp; import android.app.Activity; import java.io.IOException; import java.util.ArrayList; impo

今天,我在这个网站上尝试了许多其他问题,但没有一个是有用的,我似乎有相同的语法,适用于其他人,但每次我点击send(当我想更新文本字段时),我的应用程序就崩溃了,我尝试了一系列不同的语法,用于setText()方法,但没有任何效果

提前谢谢你的帮助

这是我的主课

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);
}
}
package com.example.myapp;
导入android.app.Activity;
导入java.io.IOException;
导入java.util.ArrayList;
导入android.app.Activity;
导入android.content.DialogInterface;
导入android.content.DialogInterface.OnClickListener;
导入android.os.Bundle;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.TextView;
导入org.apache.http.HttpResponse;
导入org.apache.http.HttpStatus;
导入org.apache.http.client.*;
导入org.apache.http.client.methods.*;
导入org.apache.http.impl.client.DefaultHttpClient;
导入org.apache.http.util.EntityUtils;
公共类TestprojectsActivity扩展了活动{
私有整数索引;
私有int=0;
私有ArrayList类别=新ArrayList();
私有ArrayList按钮=新建ArrayList();
按钮b1;
按钮b2;
按钮b3;
按钮b4;
换钮器;
私人选举;
文本视图;
编辑文本编辑;
private ArrayList questions=new ArrayList();
私有int qnum=0;
//更新所有按钮,以便我们可以查看更多类别
公共无效更新按钮(视图v){
对于(int i=0;i<4;i++){
如果(索引>=categories.size()){
指数=0;
}
buttons.get(i).setText(categories.get(index));
索引++;
}
}
公共空间Q1(视图五){
setContentView(R.layout.sub);
Qselected=指数;
//发送(空);
}
公共空间Q2(视图五){
setContentView(R.layout.sub);
Qselected=(指数+1);
//发送(空);
}
公共空间Q3(视图五){
setContentView(R.layout.sub);
Qselected=(指数+2);
//发送(空);
}
第四季度公共空间(视图五){
setContentView(R.layout.sub);
Qselected=(指数+3);
//发送(空);
}
公共无效发送(视图五){
edit.setText(“为什么不工作?”);
if(qnum
这是我的主要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(我使用它以便可以有另一个布局)


在活动的
onCreate
方法中,您将内容视图设置为
R.layout.main
,然后搜索要设置文本的
TextView
。因为
TextView
不在该布局中(在
R.layout.sub
中,也不在
R.layout.main
中),它将是
null
,当您设置文本时,您将得到
NullPointerException
,尽管您将内容视图设置为包含该
TextView
的新布局(您已经在
onCreate
方法中搜索了它,因此引用被初始化为null)

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

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);
        }
    }
公共作废发送(视图v){
txt=(TextView)findViewById(R.id.textView1);
edit=(EditText)findViewById(R.id.editText2);
edit.setText(“为什么不工作?”);
if(qnum

这与
Edittext
您的活动使用main.xml作为其布局是一样的,并且没有id为
editText2
的文本视图。仅将这样的视图放入sub.xml并不创建视图;布局文件需要膨胀并设置为活动的内容视图。调用
findViewByIdde>在您更改布局后,一切都应该正常。

就像Oncreate get call main.xml是布局xml时一样,它没有R.id.editText2,所以在那个时候编辑将为null

放这条线

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

public void Q1(视图五){
setContentView(R.layout.sub);
Qselected=指数;

edit=(EditText)findViewById(R.id.editText2);是否可以发布txt=(TextView)findViewById(R.id.textView1)的logcat异常stacksame;
edit = (EditText) findViewById(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);
    }