【问题标题】:How to populate an array with input from text field如何使用来自文本字段的输入填充数组
【发布时间】:2016-08-14 23:25:29
【问题描述】:

我一直在尝试使用编辑文本中的数据填充字符串数组 但它一直给我错误它说a string类型是必需的,我对android很陌生,不知道那是什么,它还说它无法解析方法添加

package com.android.beez.bored;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

Button save;
Button pushMe;
TextView textOne;
String hobby = new String();
EditText txt;

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

    txt = (EditText)findViewById(R.id.txtinput);
    save = (Button)findViewById(R.id.btnsave);
    save.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String getInput =  txt.getText().toString();
            hobby.add(getInput);
        }


    });
    pushMe = (Button) findViewById(R.id.pushMe);
    pushMe.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            int rando = (int)(Math.random()*3);
            textOne.setText(hobby[rando]);
        }
    });

}
}

【问题讨论】:

    标签: java android android-studio


    【解决方案1】:

    hobbyStringStrings 在 Java 中没有称为 add 的方法。

    您应该将hobby 的类型从String 更改为String[],因为代码中有hobby[rando] 表明hobby 的类型必须是String[]

    【讨论】:

    • 我希望它是一个字符串数组而不是数组列表所以我必须改变什么
    • 在我将行更改为 'hobby += getInput' 后,它仍然显示在 'textOne.setText(hobby[rando]);' line thai 需要一个数组类型
    • 是的,你应该把它改成textOne.setText(hobby);
    • 那么我希望它实现的“rando”int怎么样我将如何去做
    • 喜欢这个'String hobby = new String[];'
    【解决方案2】:

    正如第一个答案所示,Java String 类中没有 add() 方法。但是您可以使用 concat() 代替,它将指定的字符串连接到当前字符串的末尾。所以改变 hobby.add(getInput);hobby = hobby.concat(getInput); 不影响其余代码。

    【讨论】:

      【解决方案3】:

      显然,您将“数组”声明为字符串。

      在我看来,既然您希望能够动态地将add 填充到数组中,那么ArrayList<String> 更合适。

      hobby的声明改为:

      ArrayList<String> hobbies = new ArrayList<>();
      

      您需要更改的另一件事是pushMe 按钮的点击监听器。

      改变这个:

      textOne.setText(hobby[rando]);
      

      到这里:

      textOne.setText(hobbies.get(rando));
      

      因为[] 语法用于访问数组,而不是数组列表。

      无论如何,您的代码似乎想要访问数组列表中的随机项并将其显示在文本视图中。如果你想这样做,Math.random() * 3 将不起作用。

      试试这个:

      Random r = new Random();
      int rando = r.nextInt(hobbies.size());
      textOne.setText(hobbies.get(rando));
      

      【讨论】:

        猜你喜欢
        • 2017-05-15
        • 1970-01-01
        • 1970-01-01
        • 2013-06-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多