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