Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.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 从EditText中检索文本_Java_Android - Fatal编程技术网

Java 从EditText中检索文本

Java 从EditText中检索文本,java,android,Java,Android,因此,我正在制作一个小应用程序,它采用逗号分隔的列表,并在该列表中返回一个随机单词,我在从EditText视图获取文本时遇到了问题 我在Stackoverflow上看到,您应该使用EditText.getText().toString()方法从EditText获取文本。然而,当我使用这些方法时,应用程序停止工作。我运行了调试器,我的输入变量引用了一个空字符串,我还得到一个错误,即没有本地提交变量 这是java文件: public class MainActivity extends AppCom

因此,我正在制作一个小应用程序,它采用逗号分隔的列表,并在该列表中返回一个随机单词,我在从
EditText
视图获取文本时遇到了问题

我在Stackoverflow上看到,您应该使用
EditText.getText().toString()
方法从
EditText
获取文本。然而,当我使用这些方法时,应用程序停止工作。我运行了调试器,我的输入变量引用了一个空字符串,我还得到一个错误,即没有本地提交变量

这是java文件:

public class MainActivity extends AppCompatActivity {
    EditText UserInput;
    Button reset;
    Button Submit;
    TextView result;
    String Input;
    String Result;
    String word;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        UserInput = (EditText) findViewById(R.id.UserInput);
        reset = (Button) findViewById(R.id.Reset);
        Submit = (Button) findViewById(R.id.Choose);
        result = (TextView) findViewById(R.id.Result);
        Input = UserInput.getText().toString();
        Result = "Your choice should be:";

        Submit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
            Random random = new Random();
            String[] List = Input.split(",");
            int num = random.nextInt(List.length - 1);
            word = List[num];
            Result = Result + word;
            result.setText(Result);
        }
    });
}
这是活动的
EditText
视图:

<EditText
    android:id="@+id/UserInput"
    android:layout_width="273dp"
    android:layout_height="59dp"
    android:layout_marginStart="8dp"
    android:layout_marginTop="36dp"
    android:layout_marginEnd="8dp"
    android:ems="10"
    android:hint="Choice A, Choice B, Choice C,..."
    android:inputType="text"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.515"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/Instructions" />

例如,如果我在
EditText
中写入'a,b',我希望输入是'a,b',但事实并非如此。当我调试时,它向我显示它是一个空字符串,我不知道为什么。也。我得到了另一个错误,
onClick
方法中没有本地提交变量。如何修复这些错误?

调试器显示空字符串在这种情况下,
num
可能变为0,这可能导致
索引自动边界
异常

String[] List = Input.split(",");
int num = random.nextInt(List.length - 1);
word = List[num];

发布日志以获得进一步帮助。

您在声明时从
EditText
获取文本,因为
输入
为空<代码>输入未查看编辑文本的内容变化

为此,您必须在提交之前再次获取输入

Submit.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    Random random = new Random();
    Input = UserInput.getText().toString();
    if (Input != null) {
        String[] List = Input.split(",");
        int num = random.nextInt(List.length - 1);
        word = List[num];
        Result = Result + word;
        result.setText(Result);
    }        
    }
});

Move
Input=UserInput.getText().toString()
onClick
方法中

Submit.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Input = UserInput.getText().toString();
        Random random = new Random();
        String[] List = Input.split(",");
        int num = random.nextInt(List.length - 1);
        word = List[num];
        Result = Result + word;
        result.setText(Result);
    }
}
只有在单击按钮时才需要阅读
EditText
,而不是在应用程序首次启动时

外行的解释:
在当前代码中,当应用程序启动时,您可以阅读
EditText
。因为它当时是空的,所以读取时会得到一个空字符串。

Post logcat error。旁注建议,在JAVA中,最好以小写字母开头变量名。确切地说,是这样的