java - 为什么 EventListener 仅在第一次工作?

标签 java android-studio calculator event-listener

我使用此 Java 代码来编写 Android RPN 计算器

现在我正处于单击按钮会触发按钮的值显示在 TextView 字段中的阶段(或者至少显示带有 Toast.makeText 的内容),但不幸的是它仅适用于第一次按钮单击。

接下来的事件将被忽略(没有通过 Toast 的消息,并且 TextView 字段中没有更改)。你知道为什么吗?

MainActivity.java

@Override
public void onClick(View v) {

    setContentView(R.layout.activity_main);


    switch (v.getId()){
        case R.id.btn0:
            stackedit0 = findViewById(R.id.stackedit0);
            stackedit0.append("0");
            Toast.makeText( this, "btn0", Toast.LENGTH_SHORT).show();
            break;
        case R.id.btn1:
            stackedit0 = findViewById(R.id.stackedit0);
            stackedit0.append("1");
            Toast.makeText( this, "btn0", Toast.LENGTH_SHORT).show();
            break;
        case R.id.btn2:
            stackedit0 = findViewById(R.id.stackedit0);
            stackedit0.append("2");
            Toast.makeText( this, "btn0", Toast.LENGTH_SHORT).show();
            break;
        case R.id.btn3:
            stackedit0 = findViewById(R.id.stackedit0);
            stackedit0.append("3");
            break;
        case R.id.btn4:
            stackedit0 = findViewById(R.id.stackedit0);
            stackedit0.append("4");
            break;
        case R.id.btn5:
            stackedit0 = findViewById(R.id.stackedit0);
            stackedit0.append("5");
            break;
        case R.id.btn6:
            stackedit0 = findViewById(R.id.stackedit0);
            stackedit0.append("6");
            break;
        case R.id.btn7:
            stackedit0 = findViewById(R.id.stackedit0);
            stackedit0.append("7");
            break;
        case R.id.btn8:
            stackedit0 = findViewById(R.id.stackedit0);
            stackedit0.append("8");
            break;
        case R.id.btn9:
            stackedit0 = findViewById(R.id.stackedit0);
            stackedit0.append("9");
            break;


        case R.id.Plus:

            break;
        case R.id.Minus:

            break;
        case R.id.Power:

            break;
        case R.id.Root:

            break;

        case R.id.MPlus:

            break;
        case R.id.MMinus:

            break;
        case R.id.AC:
            stackedit0 = findViewById(R.id.stackedit0);
            stackedit0.setText("");
            break;
        case R.id.MRC:

            break;



    }
}

谢谢!

最佳答案

您需要从 onClick() 方法中删除 setContentView(R.layout.activity_main);

关于java - 为什么 EventListener 仅在第一次工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58677675/

相关文章:

java - 在 Java 中调用 HealthVault GetThings 方法

java - wcalculator 删除按钮替代 enteredInput.length() - 1);

javascript - 在 html javascript 中创建一个简单的成本估算器。从 HTML 按钮调用 JS 函数。 JS 中返回一个值

java - 尝试用java制作一个函数计算器,我不知道哪里出了问题

android - 如何使用 Android Studio 在 Android 手机上安装应用程序?

java - 如何在 IntelliJ IDEA 中将选项卡拆分为 2 行?

java - 步骤插件开发 : How to list custom variables inside textVar() input?

java - ' sys.objects ' 附近的语法不正确

java - 监控安卓应用程序

java - 安卓工作室 : leave my one-line methods as i've typed them when reformating code