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