setText 导致问题
setText causing problems
我浏览了很多文章并找到了类似的文章,但没有找到任何能让我解决问题的文章。
我正在尝试创建一个随机数生成器,但无法获取随机数以进入文本字段。这看起来很简单,我不确定发生了什么。 "setText" 不断抛出错误 "Cannot resolve method 'setText(Java.lang.String)"
我随机数中的代码可能有点奇怪。我一直在尝试不同的方法来让它工作,这是最近的尝试。
private Randomizer mRandomizer = new Randomizer();
Button rollButton;
GridLayout gridLayout;
Spinner fourspinner;
Spinner sixspinner;
Spinner eightspinner;
Spinner tenspinner;
Spinner twentyspinner;
Spinner hundredspinner;
TextView resultText;
Random randDice;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
rollButton = (Button)findViewById(R.id.rollButton);
gridLayout = (GridLayout)findViewById(R.id.gridLayout);
fourspinner = (Spinner)findViewById(R.id.fourspinner);
sixspinner = (Spinner)findViewById(R.id.sixspinner);
eightspinner = (Spinner)findViewById(R.id.eightspinner);
tenspinner = (Spinner)findViewById(R.id.tenspinner);
twentyspinner = (Spinner)findViewById(R.id.twentyspinner);
hundredspinner = (Spinner)findViewById(R.id.hundredspinner);
resultText = (TextView)findViewById(R.id.resultText);
View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
// click the Button!
String resultText = "";
randDice = new Random();
for(int i = 0; i < 10; i++){
resultText += String.valueOf(randDice.nextInt()) + "\n";
}
resultText.setText(""+resultText);
//resultText.(diceRoll);
}
};
rollButton.setOnClickListener(listener);
}
这是因为您正在引用局部变量 resultText String 将其设置为 textview。它不能引用您在 class 中声明的文本视图,因为在侦听器中它引用字符串。
更改 textView 即
resultText = (TextView)findViewById(R.id.resultText);
不同的东西,比如
resultTextTextView = (TextView)findViewById(R.id.resultText);
并将其用作
resultTextTextView.setText(""+resultText);
或使用 activity 的 class 或像
这样的片段前缀
MyActivity.this.resultText.setText(""+resultText);
您应该重命名您的 TextView 或您的字符串 "resultText" - 如果您两次使用相同的变量名,它将不起作用。
问题是,您尝试在 String 而不是 TextView 上调用 setText,因为您在 onCreate 方法中声明 "resultText" 为 String。
您声明了两个同名变量:
TextView resultText
和
String resultText
实际上,String
变量(在方法内部声明)是 hiding TextView
变量。要解决此问题,请将本地字符串变量(及其用法)重命名为例如
String result
我浏览了很多文章并找到了类似的文章,但没有找到任何能让我解决问题的文章。
我正在尝试创建一个随机数生成器,但无法获取随机数以进入文本字段。这看起来很简单,我不确定发生了什么。 "setText" 不断抛出错误 "Cannot resolve method 'setText(Java.lang.String)"
我随机数中的代码可能有点奇怪。我一直在尝试不同的方法来让它工作,这是最近的尝试。
private Randomizer mRandomizer = new Randomizer();
Button rollButton;
GridLayout gridLayout;
Spinner fourspinner;
Spinner sixspinner;
Spinner eightspinner;
Spinner tenspinner;
Spinner twentyspinner;
Spinner hundredspinner;
TextView resultText;
Random randDice;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
rollButton = (Button)findViewById(R.id.rollButton);
gridLayout = (GridLayout)findViewById(R.id.gridLayout);
fourspinner = (Spinner)findViewById(R.id.fourspinner);
sixspinner = (Spinner)findViewById(R.id.sixspinner);
eightspinner = (Spinner)findViewById(R.id.eightspinner);
tenspinner = (Spinner)findViewById(R.id.tenspinner);
twentyspinner = (Spinner)findViewById(R.id.twentyspinner);
hundredspinner = (Spinner)findViewById(R.id.hundredspinner);
resultText = (TextView)findViewById(R.id.resultText);
View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
// click the Button!
String resultText = "";
randDice = new Random();
for(int i = 0; i < 10; i++){
resultText += String.valueOf(randDice.nextInt()) + "\n";
}
resultText.setText(""+resultText);
//resultText.(diceRoll);
}
};
rollButton.setOnClickListener(listener);
}
这是因为您正在引用局部变量 resultText String 将其设置为 textview。它不能引用您在 class 中声明的文本视图,因为在侦听器中它引用字符串。
更改 textView 即
resultText = (TextView)findViewById(R.id.resultText);
不同的东西,比如
resultTextTextView = (TextView)findViewById(R.id.resultText);
并将其用作
resultTextTextView.setText(""+resultText);
或使用 activity 的 class 或像
这样的片段前缀MyActivity.this.resultText.setText(""+resultText);
您应该重命名您的 TextView 或您的字符串 "resultText" - 如果您两次使用相同的变量名,它将不起作用。 问题是,您尝试在 String 而不是 TextView 上调用 setText,因为您在 onCreate 方法中声明 "resultText" 为 String。
您声明了两个同名变量:
TextView resultText
和
String resultText
实际上,String
变量(在方法内部声明)是 hiding TextView
变量。要解决此问题,请将本地字符串变量(及其用法)重命名为例如
String result