setText导致问题

时间:2015-10-04 06:59:45

标签: java android methods settext

我已经阅读了很多文章并发现了相似的内容,但是没有找到任何可以解决问题的文章。

我正在尝试创建一个随机数生成器,我无法获取随机数进入文本字段。这看起来很简单,我不确定发生了什么。 “setText”不断抛出错误“无法解析方法”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);
}

3 个答案:

答案 0 :(得分:0)

这是因为您正在引用局部变量resultText String以将其设置为textview。它不能引用您在类中声明的textview,因为在侦听器内部它引用了字符串。

更改textView即

 resultText = (TextView)findViewById(R.id.resultText);

等不同的东西
 resultTextTextView = (TextView)findViewById(R.id.resultText);

并将其用作

resultTextTextView.setText(""+resultText);

或使用活动类或片段前缀,如

MyActivity.this.resultText.setText(""+resultText);

答案 1 :(得分:0)

您应该重命名TextView或String“resultText” - 如果您使用相同的变量名两次,它将无法工作。 问题是,您尝试在String上调用setText而不是在TextView上调用setText,因为您在onCreate方法中将“resultText”声明为String。

答案 2 :(得分:0)

您已声明两个具有相同名称的变量:

TextView resultText

String resultText

实际上,String变量(在方法中声明)是hiding TextView变量。要解决此问题,请将本地字符串变量(及其用法)重命名为例如

String result