微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我的 android studio 制作的 apk 无法正常工作

如何解决我的 android studio 制作的 apk 无法正常工作

我正在使用 Android Studio 3.2 并且我的应用程序正在显示,但按钮没有触发操作请建议任何代码更改,以便它们触发应用程序上的事件

主活动代码是:

package com.example.myfalconcalculator;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    TextView expression;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


     Button num1 = findViewById(R.id.num1);
     expression =  findViewById(R.id.expression);
     Button num2 = findViewById(R.id.num2);
     Button num3 = findViewById(R.id.num3);
     Button num4 = findViewById(R.id.num4);
     Button num5 = findViewById(R.id.num5);
     Button num6 = findViewById(R.id.num6);
     Button num7 = findViewById(R.id.num7);
     Button num8 = findViewById(R.id.num8);
     Button num9 = findViewById(R.id.num9);
     Button num0 = findViewById(R.id.num0);
     Button plus = findViewById(R.id.plus);
     Button minus = findViewById(R.id.minus);
     Button equalsTo = findViewById(R.id.equalsTo);
     Button closeBrace = findViewById(R.id.closeBrace);
     Button openBrace = findViewById(R.id.openBrace);
     Button clear = findViewById(R.id.clear);
     Button delete = findViewById(R.id.delete);
     Button exponential = findViewById(R.id.exponential);
     Button divideBy = findViewById(R.id.divideBy);


    num1.setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            expression.setText(expression.getText().toString() + "1");
        }

    });
    num2.setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            expression.setText(expression.getText().toString() + "2");
        }
    });

    num3.setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            expression.setText(expression.getText().toString() + "3");
        }
    });

    num4.setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            expression.setText(expression.getText().toString() + "4");
        }
    });

    num5.setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            expression.setText(expression.getText().toString() + "5");
        }
    });

    num6.setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            expression.setText(expression.getText().toString() + "6");
        }
    });

    num7.setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            expression.setText(expression.getText().toString() + "7");
        }
    });

    num8.setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            expression.setText(expression.getText().toString() + "8");
        }
    });

    num9.setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            expression.setText(expression.getText().toString() + "9");
        }
    });

    num0.setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            expression.setText(expression.getText().toString() + "0");
        }
    });

    plus.setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            expression.setText(expression.getText().toString() + "+");
        }
    });

    minus.setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            expression.setText(expression.getText().toString() + "-");
        }
    });

    exponential.setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            expression.setText(expression.getText().toString() + "*");
        }
    });

    divideBy.setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            expression.setText(expression.getText().toString() + "/");
        }
    });

    equalsTo.setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            SimpleMathSolver mathSolver = new SimpleMathSolver(expression.getText().toString());
            try {
                expression.setText(String.valueOf(mathSolver.solve()));
            } catch (Exception e) {
                expression.setText("Input Not Valid");
            }
        }
    });

    closeBrace.setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            expression.setText(expression.getText().toString() + ")");
        }
    });

    openBrace.setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            expression.setText(expression.getText().toString() + "(");
        }
    });

    clear.setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            expression.setText("");
        }
    });

    delete.setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String tempExpression = expression.getText().toString().substring(0,expression.getText().toString().length()-1);
            expression.setText(tempExpression);
        }
    });

    }

}

主活动文件依赖于另一个文件

package com.example.myfalconcalculator;

import java.util.Scanner;
import java.util.Stack;

public class SimpleMathSolver {
    private String inputExp;

    private final char PLUS = '+';
    private final char MINUS = '-';
    private final char MULTIPLY = '*';
    private final char DIVIDE = '/';
    private final char OPENBRACE = '(';
    private final char CLOSEBRACE = ')';

    public SimpleMathSolver(String inputExp) {
    this.inputExp = inputExp;
    }

    public int solve() throws Exception {
    String withoutBraceInputExp = solveBraces(this.inputExp);
    return solveMath(withoutBraceInputExp);
    }

    private String solveBraces(String inputExp) throws Exception {
    String output = inputExp;

    int closeBraceIndex = output.indexOf(CLOSEBRACE);
    while (closeBraceIndex >= 0) {
        int openBraceIndex = output.substring(0,closeBraceIndex).lastIndexOf(OPENBRACE);
        String solveStr = output.substring(openBraceIndex + 1,closeBraceIndex);
        int value = solveMath(solveStr);
        output = output.substring(0,openBraceIndex) + value
                + output.substring(closeBraceIndex + 1,output.length());
        closeBraceIndex = output.indexOf(CLOSEBRACE);
    }
    return output;
    }

    private int solveMath(String inputExp) throws Exception {
    Stack<Integer> numberStack = new Stack<Integer>();
    Stack<Character> symbolStack = new Stack<Character>();

    updateStacks(inputExp,numberStack,symbolStack);
    solveMathSymbol(numberStack,symbolStack,DIVIDE);
    solveMathSymbol(numberStack,MULTIPLY);
    solveMathSymbol(numberStack,MINUS);
    solveMathSymbol(numberStack,PLUS);

    return numberStack.pop();
    }

    private void solveMathSymbol(Stack<Integer> numberStack,Stack<Character> symbolStack,char symbol) {
    Stack<Integer> tempNumberStack = new Stack<Integer>();
    Stack<Character> tempSymbolStack = new Stack<Character>();

    while (symbolStack.size() > 0) {
        char ch = symbolStack.pop();
        if (ch == symbol) {
            int pop1 = numberStack.pop();
            int pop2 = numberStack.pop();
            int out = 0;
            switch (symbol) {
                case PLUS:
                    out = pop2 + pop1;
                    break;
                case MINUS:
                    out = pop2 - pop1;
                    break;
                case MULTIPLY:
                    out = pop2 * pop1;
                    break;
                case DIVIDE:
                    out = pop2 / pop1;
                    break;
            }
            numberStack.push(out);
        } else {
            tempSymbolStack.push(ch);
            int numpop = numberStack.pop();
            tempNumberStack.push(numpop);
        }
    }
    while (tempSymbolStack.size() > 0) {
        char charpop = tempSymbolStack.pop();
        symbolStack.push(charpop);

        int numpop = tempNumberStack.pop();
        numberStack.push(numpop);
    }
    }

    private void updateStacks(String inputExp,Stack<Integer> numberStack,Stack<Character> symbolStack)
        throws Exception {
    int number = 0;

    for (int i = 0; i < inputExp.length(); i++) {
        char ch = inputExp.charat(i);

        if (Character.isDigit(ch)) {
            number = number * 10 + Integer.parseInt(String.valueOf(ch));
        } else {
            numberStack.push(number);
            number = 0;

            if (ch == PLUS || ch == MINUS || ch == MULTIPLY || ch == DIVIDE) {
                symbolStack.push(ch);
            } else {
                throw new Exception("UnkNown Math Symbol " + ch);
            }
        }
    }

    numberStack.push(number);
    }

    public static void main(String[] args) {
    Scanner scanner = new Scanner(system.in);
    String retryOp = "N";
    do {
        System.out.println("Enter Math Expression");
        String inputExp = scanner.nextLine();

        SimpleMathSolver solver = new SimpleMathSolver(inputExp);
        try {
            System.out.println("Result: " + solver.solve());
        } catch (Exception ex) {
            ex.printstacktrace();
        }
        System.out.println("Do you want to try this again");
        retryOp = scanner.nextLine();
    } while (retryOp.equalsIgnoreCase("Y"));
    scanner.close();
    System.exit(0);
    }
}

这是活动的 main.xml 文件

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">


    <Button
    android:id="@+id/closeBrace"
    android:layout_width="74dp"
    android:layout_height="76dp"
    android:layout_marginEnd="6dp"
    android:layout_marginRight="6dp"
    android:layout_marginBottom="1dp"
    android:text=")"
    app:layout_constraintBottom_toTopOf="@+id/equalsTo"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toEndOf="@+id/openBrace"
    app:layout_constraintTop_toBottomOf="@+id/divideBy" />

    <Button
    android:id="@+id/openBrace"
    android:layout_width="74dp"
    android:layout_height="76dp"
    android:layout_marginBottom="1dp"
    android:text="("
    app:layout_constraintBottom_toTopOf="@+id/equalsTo"
    app:layout_constraintEnd_toStartOf="@+id/closeBrace"
    app:layout_constraintStart_toEndOf="@+id/num9"
    app:layout_constraintTop_toBottomOf="@+id/exponential" />

    <Button
    android:id="@+id/divideBy"
    android:layout_width="74dp"
    android:layout_height="76dp"
    android:layout_marginEnd="6dp"
    android:layout_marginRight="6dp"
    android:text="/"
    app:layout_constraintBottom_toTopOf="@+id/closeBrace"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toEndOf="@+id/exponential"
    app:layout_constraintTop_toBottomOf="@+id/minus" />

    <Button
    android:id="@+id/exponential"
    android:layout_width="74dp"
    android:layout_height="76dp"
    android:text="*"
    app:layout_constraintBottom_toTopOf="@+id/openBrace"
    app:layout_constraintEnd_toStartOf="@+id/divideBy"
    app:layout_constraintStart_toEndOf="@+id/num6"
    app:layout_constraintTop_toBottomOf="@+id/plus" />

    <Button
    android:id="@+id/plus"
    android:layout_width="74dp"
    android:layout_height="76dp"
    android:text="+"
    app:layout_constraintBottom_toTopOf="@+id/exponential"
    app:layout_constraintEnd_toStartOf="@+id/minus"
    app:layout_constraintStart_toEndOf="@+id/num3"
    app:layout_constraintTop_toBottomOf="@+id/delete" />

    <Button
    android:id="@+id/minus"
    android:layout_width="74dp"
    android:layout_height="76dp"
    android:layout_marginEnd="6dp"
    android:layout_marginRight="6dp"
    android:text="-"
    app:layout_constraintBottom_toTopOf="@+id/divideBy"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toEndOf="@+id/plus"
    app:layout_constraintTop_toBottomOf="@+id/delete" />

    <Button
    android:id="@+id/num0"
    android:layout_width="252dp"
    android:layout_height="76dp"
    android:layout_marginStart="3dp"
    android:layout_marginLeft="3dp"
    android:layout_marginBottom="5dp"
    android:text="0"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toStartOf="@+id/equalsTo"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/num8" />

    <Button
    android:id="@+id/num5"
    android:layout_width="84dp"
    android:layout_height="76dp"
    android:layout_marginBottom="2dp"
    android:text="5"
    app:layout_constraintBottom_toTopOf="@+id/num8"
    app:layout_constraintEnd_toStartOf="@+id/num6"
    app:layout_constraintStart_toEndOf="@+id/num4"
    app:layout_constraintTop_toBottomOf="@+id/num2" />

    <Button
    android:id="@+id/num4"
    android:layout_width="84dp"
    android:layout_height="76dp"
    android:layout_marginStart="5dp"
    android:layout_marginLeft="5dp"
    android:layout_marginBottom="1dp"
    android:text="4"
    app:layout_constraintBottom_toTopOf="@+id/num7"
    app:layout_constraintEnd_toStartOf="@+id/num5"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/num1" />

    <Button
    android:id="@+id/num6"
    android:layout_width="84dp"
    android:layout_height="76dp"
    android:layout_marginEnd="1dp"
    android:layout_marginRight="1dp"
    android:layout_marginBottom="2dp"
    android:text="6"
    app:layout_constraintBottom_toTopOf="@+id/num9"
    app:layout_constraintEnd_toStartOf="@+id/exponential"
    app:layout_constraintStart_toEndOf="@+id/num5"
    app:layout_constraintTop_toBottomOf="@+id/num3" />

    <Button
    android:id="@+id/num8"
    android:layout_width="84dp"
    android:layout_height="76dp"
    android:layout_marginTop="1dp"
    android:text="8"
    app:layout_constraintBottom_toTopOf="@+id/num0"
    app:layout_constraintEnd_toStartOf="@+id/num9"
    app:layout_constraintStart_toEndOf="@+id/num7"
    app:layout_constraintTop_toBottomOf="@+id/num5" />

    <Button
    android:id="@+id/num7"
    android:layout_width="84dp"
    android:layout_height="76dp"
    android:layout_marginStart="5dp"
    android:layout_marginLeft="5dp"
    android:layout_marginTop="1dp"
    android:text="7"
    app:layout_constraintBottom_toTopOf="@+id/num0"
    app:layout_constraintEnd_toStartOf="@+id/num8"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/num4" />

    <Button
    android:id="@+id/num9"
    android:layout_width="84dp"
    android:layout_height="76dp"
    android:layout_marginTop="1dp"
    android:layout_marginEnd="1dp"
    android:layout_marginRight="1dp"
    android:text="9"
    app:layout_constraintBottom_toTopOf="@+id/num0"
    app:layout_constraintEnd_toStartOf="@+id/openBrace"
    app:layout_constraintStart_toEndOf="@+id/num8"
    app:layout_constraintTop_toBottomOf="@+id/num6" />

    <Button
    android:id="@+id/num3"
    android:layout_width="84dp"
    android:layout_height="76dp"
    android:text="3"
    app:layout_constraintBottom_toTopOf="@+id/num6"
    app:layout_constraintEnd_toStartOf="@+id/plus"
    app:layout_constraintStart_toEndOf="@+id/num2"
    app:layout_constraintTop_toBottomOf="@+id/clear" />

    <Button
    android:id="@+id/num2"
    android:layout_width="84dp"
    android:layout_height="76dp"
    android:text="2"
    app:layout_constraintBottom_toTopOf="@+id/num5"
    app:layout_constraintEnd_toStartOf="@+id/num3"
    app:layout_constraintStart_toEndOf="@+id/num1"
    app:layout_constraintTop_toBottomOf="@+id/clear" />

    <Button
    android:id="@+id/equalsTo"
    android:layout_width="150dp"
    android:layout_height="76dp"
    android:layout_marginEnd="6dp"
    android:layout_marginRight="6dp"
    android:layout_marginBottom="5dp"
    android:text="="
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toEndOf="@+id/num0"
    app:layout_constraintTop_toBottomOf="@+id/num9" />

    <Button
    android:id="@+id/clear"
    android:layout_width="252dp"
    android:layout_height="76dp"
    android:layout_marginStart="5dp"
    android:layout_marginLeft="5dp"
    android:layout_marginTop="8dp"
    android:text="Clear"
    app:layout_constraintEnd_toStartOf="@+id/delete"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/expression" />

    <TextView
    android:id="@+id/expression"
    android:layout_width="400dp"
    android:layout_height="331dp"
    android:layout_marginStart="5dp"
    android:layout_marginLeft="5dp"
    android:layout_marginTop="6dp"
    android:layout_marginEnd="6dp"
    android:layout_marginRight="6dp"
    android:layout_marginBottom="8dp"
    android:text=""
    app:layout_constraintBottom_toTopOf="@+id/clear"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

    <Button
    android:id="@+id/delete"
    android:layout_width="148dp"
    android:layout_height="76dp"
    android:layout_marginTop="8dp"
    android:layout_marginEnd="6dp"
    android:layout_marginRight="6dp"
    android:text="Delete"
    app:layout_constraintBottom_toTopOf="@+id/plus"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toEndOf="@+id/clear"
    app:layout_constraintTop_toBottomOf="@+id/expression" />

    <Button
    android:id="@+id/num1"
    android:layout_width="84dp"
    android:layout_height="76dp"
    android:layout_marginStart="5dp"
    android:layout_marginLeft="5dp"
    android:text="1"
    app:layout_constraintBottom_toTopOf="@+id/num4"
    app:layout_constraintEnd_toStartOf="@+id/num2"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/clear" />
</android.support.constraint.ConstraintLayout>

请建议如何解决这个问题。

解决方法

你不能在 oncreate 之外执行 final Button num1 = findViewById(R.id.num1);,你所有的 findViewById(R.id.foo); 语句都必须在 onCreate 内部(或者至少在 onCreate 被调用之后)

Button button;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = findViewById<Button>(R.id.foo)

}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?