【问题标题】:How to multiply displayed TextView Integer values on multiple buttons click如何在多个按钮单击上乘以显示的 TextView 整数值
【发布时间】:2020-09-08 06:01:50
【问题描述】:

我有 10 个按钮,有 2 列,例如 5x2。这 2 列包含 for 循环,每个按钮有 5 个按钮,每列都有 textview,当用户单击这 2 列中的任何按钮时,会显示 2 个 textview 整数。我想将这些显示的数字相乘以获得第三个 Textview 中的最终结果,但它没有相乘,下面是我编写的代码:

public class MultiplicationActivity extends AppCompatActivity{
    private static final int[] column1_buttonsArrays = {R.id.column1_button0, R.id.column1_button1, R.id.column1_button2, R.id.column1_button3, R.id.column1_button4};
    private Button[] c1_buttons = new Button[column1_buttonsArrays.length];
    int i1;
    private static final int[] column2_buttonsArrays = {R.id.column2_button0, R.id.column2_button1, R.id.column2_button2, R.id.column2_button3, R.id.column2_button4};
    private Button[] c2_buttons = new Button[column2_buttonsArrays.length];
    int i2;
    int num1, num2, solution1;
    @Override
        protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.multiplication);
        
           dummyTextValue1 = findViewById(R.id.dummy_value1);
           dummyTextValue2 = findViewById(R.id.dummy_value2);
           multipliedText = findViewById(R.id.multiplied_value);
        
           for(i1 = 0; i1 < column1_buttonsArrays.length; i1++) {
           c1_buttons[i1] = findViewById(column1_buttonsArrays[i1_buttons]);
           c1_buttons[i1].setOnClickListener(new View.OnClickListener() {
           @Override
             public void onClick(View view) {
             switch (view.getId()) {
             case R.id.column1_button0:
                 dummyTextValue1.setText("0");
                 break;
             case R.id.column1_button1:
                 dummyTextValue1.setText("1");
                 break;
             case R.id.column1_button2:
                 dummyTextValue1.setText("2");
                 break;
             case R.id.column1_button3:
                 dummyTextValue1.setText("3");
                 break;
             case R.id.column1_button4:
                 dummyTextValue1.setText("4");
                 break;
                }
            }
        });
    }
            for(i2 = 0; i2 < column2_buttonsArrays.length; i2++) {
            c2_buttons[i2] = findViewById(column2_buttonsArrays[i2_buttons]);
            c2_buttons[i2].setOnClickListener(new View.OnClickListener() {
            @Override
              public void onClick(View view) {
              switch (view.getId()) {
             case R.id.column2_button0:
                 dummyTextValue2.setText("0");
                 break;
             case R.id.column2_button1:
                 dummyTextValue2.setText("1");
                 break;
             case R.id.column2_button2:
                 dummyTextValue2.setText("2");
                 break;
             case R.id.column2_button3:
                 dummyTextValue2.setText("3");
                 break;
             case R.id.column2_button4:
                 dummyTextValue2.setText("4");
                 break;
                }
            }
        });
    }
    String value1 = dummyTextValue1.getText().toString();
    String value2 = dummyTextValue2.getText().toString();
    num1 = Integer.parseInt(value1);
    num2 = Integer.parseInt(value2);
    solution1 = (int) (num1 * num2);
    multipliedText.setText(solution1);
  }
}

不明白我在哪里做错了。请给我一个想法或更新代码,如何从 for 循环中获得相乘的显示值。提前谢谢..

【问题讨论】:

    标签: android android-studio for-loop button textview


    【解决方案1】:

    问题是您的solution 变量是一个整数。 solution1 = (int) (num1 * num2);

    在android中,TextView.setText(int resource)可以用来在TextView中设置一个String资源。您将需要使用TextView.setText(String text)。检查documentation

    你可以这样做:

    multipliedText.setText(String.valueOf(solution1));
    

    另一个问题是multipliedText.setText()在Activity一创建就被执行了。例如。两个 dummyValues 都将为空。您需要在单击按钮后执行此行。

    类似这样的:

    dummyTextValue1.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v) {
            switch (view.getId()) {
                 //..
            }
    
            String value1 = dummyTextValue1.getText().toString();
            String value2 = dummyTextValue2.getText().toString();
            updateText(value1, value2);
       }
    });
    
    private void updateText(String value1, String value2, TextView textView) {
    
        num1 = Integer.parseInt(value1);
        num2 = Integer.parseInt(value2);
        solution1 = (int) (num1 * num2);
        textView.setText(String.valueOf(solution1));
    }
    

    每次单击其中一个按钮时都会调用 updateText,从而更新您的文本。祝你好运

    【讨论】:

    • 我已将 MultipliedText 编辑为字符串,即使值没有改变。请问还有其他解决方案吗?
    • 我运气不好。相乘文本未更新。
    • 我如何为第二个开关放置代码,您已经为第一个开关提供了代码,并且仅显示第一列按钮单击的乘积值。
    • 嗨@Entreco 感谢您的支持。我已经在所有开关案例中放置了字符串值和更新文本,现在代码可以按照我的意愿完美运行。再次感谢您,您拯救了我的一天...+100
    猜你喜欢
    • 1970-01-01
    • 2012-11-27
    • 1970-01-01
    • 2019-08-26
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 2017-12-07
    相关资源
    最近更新 更多