如何使用文本字段的输入填充数组

时间:2016-08-14 23:25:29

标签: java android android-studio

我一直在尝试使用编辑文本中的数据填充字符串数组 但它一直给我错误,它说一个字符串类型是必需的,我是新的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]);
        }
    });

}
}

3 个答案:

答案 0 :(得分:0)

hobbyString,而String在Java中没有名为add的方法。

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

显然,你宣布了你的"阵列"作为一个字符串。

在我看来,既然你希望能够动态地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));