我创建的计算器应用程序将无法启动,它在构建时没有显示错误或任何编译错误[关闭]

问题描述 投票:-7回答:1
  1. package com.example.calculator; import android.os.Bundle; import androidx.appcompat.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.ImageButton; import android.widget.TextView; public class MainActivity extends AppCompatActivity { private Boolean firstNopresent=false; private Boolean isOpPressed= false; private double firstno=0; private double secondno=0; private int secondnoindex=0; private char currentOp; final TextView calculatorScreen = findViewById(R.id.calulatorScreen); final TextView answerScreen = findViewById(R.id.AnswerScreen); double answer = 0; private Boolean Result=false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.keypad_fragment); final Button n0=findViewById(R.id.zero); final Button n1=findViewById(R.id.one); final Button n2=findViewById(R.id.two); final Button n3=findViewById(R.id.three); final Button n4=findViewById(R.id.four); final Button n5=findViewById(R.id.five); final Button n6=findViewById(R.id.six); final Button n7=findViewById(R.id.seven); final Button n8=findViewById(R.id.eight); final Button n9=findViewById(R.id.nine); final Button n00=findViewById(R.id.twozero); final Button division=findViewById(R.id.div); final Button multiply=findViewById(R.id.mul); final Button addition=findViewById(R.id.add); final Button substract=findViewById(R.id.substract); final Button clear=findViewById(R.id.clear); final Button equals=findViewById(R.id.equals); final Button mod=findViewById(R.id.mod); final ImageButton backspace=findViewById(R.id.backspace); final Button dot=findViewById(R.id.dot); final Result Answer=new Result(); final View.OnClickListener calculatorListener =new View.OnClickListener() { @Override public void onClick(View v) { final int id=v.getId(); switch (id){ case R.id.zero: calculatorScreen.append("0"); break; case R.id.one: calculatorScreen.append("1"); break; case R.id.two: calculatorScreen.append("2"); break; case R.id.three: calculatorScreen.append("3"); break; case R.id.four: calculatorScreen.append("4"); break; case R.id.five: calculatorScreen.append("5"); break; case R.id.six: calculatorScreen.append("6"); break; case R.id.seven: calculatorScreen.append("7"); break; case R.id.eight: calculatorScreen.append("8"); break; case R.id.nine: calculatorScreen.append("9"); break; case R.id.twozero: calculatorScreen.append("00"); break; case R.id.dot: calculatorScreen.append("."); } firstNopresent=true; if (firstNopresent && isOpPressed ){ String screenContentt=calculatorScreen.getText().toString(); String secondNumberString= screenContentt.substring(secondnoindex,screenContentt.length()); secondno= Double.parseDouble(secondNumberString); answer=Answer.getAnswer(firstno,secondno,currentOp); answerScreen.setText((int) answer); Result=true; } } }; final View.OnClickListener operatorListener=new View.OnClickListener() { @Override public void onClick(View v) { int id= v.getId(); switch (id){ case R.id.mod: calculatorScreen.append("%"); currentOp = '%'; break; case R.id.mul: calculatorScreen.append("*"); currentOp = '*'; break; case R.id.div: calculatorScreen.append("/"); currentOp = '/'; break; case R.id.add: calculatorScreen.append("+"); currentOp = '+'; break; case R.id.substract: calculatorScreen.append("+"); currentOp = '-'; break; } if (firstNopresent){ String screenContent=calculatorScreen.getText().toString(); secondnoindex=screenContent.length() + 1; firstno=Double.parseDouble(screenContent); isOpPressed=true; } } }; n0.setOnClickListener(calculatorListener); n1.setOnClickListener(calculatorListener); n2.setOnClickListener(calculatorListener); n3.setOnClickListener(calculatorListener); n4.setOnClickListener(calculatorListener); n5.setOnClickListener(calculatorListener); n6.setOnClickListener(calculatorListener); n7.setOnClickListener(calculatorListener); n8.setOnClickListener(calculatorListener); n9.setOnClickListener(calculatorListener); n00.setOnClickListener(calculatorListener); division.setOnClickListener(operatorListener); multiply.setOnClickListener(operatorListener); addition.setOnClickListener(operatorListener); substract.setOnClickListener(operatorListener); mod.setOnClickListener(operatorListener); dot.setOnClickListener(calculatorListener); backspace.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String displayElements = calculatorScreen.getText().toString(); int length=displayElements.length(); if (length>0){ displayElements=displayElements.substring(0,length-1); calculatorScreen.setText(displayElements); } if (displayElements.length()==0){ firstNopresent=false; isOpPressed=false; firstno=0; } } }); clear.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { calculatorScreen.setText(""); firstNopresent=false; firstno=0; isOpPressed=false; answer=0; } }); equals.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (Result){ calculatorScreen.setText(String.valueOf(answer)); isOpPressed=false; firstno=answer; firstNopresent=true; } } }); } }
  2. 2。
        <?xml version="1.0" encoding="utf-8"?>
            <manifest xmlns:android="http://schemas.android.com/apk/res/android"
                package="com.example.calculator">

                <application
                    android:allowBackup="true"
                    android:icon="@mipmap/ic_launcher"
                    android:label="@string/app_name"
                    android:roundIcon="@mipmap/ic_launcher_round"
                    android:supportsRtl="true"
                    android:theme="@style/AppTheme">
                    <activity
                        android:name=".MainActivity"
                        android:label="@string/app_name"
                        android:theme="@style/AppTheme.NoActionBar">
                        <intent-filter>
                            <action android:name="android.intent.action.MAIN" />

                            <category android:name="android.intent.category.LAUNCHER" />
                        </intent-filter>
                    </activity>
                </application>

            </manifest>
3。
    <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.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"> <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/calulatorScreen" android:layout_width="match_parent" android:layout_height="210dp" android:gravity="center|end" android:textAppearance="@style/TextAppearance.AppCompat.Display1" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="1.0" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <TextView android:id="@+id/AnswerScreen" android:layout_width="match_parent" android:layout_height="71dp" android:gravity="center|end" app:layout_constraintBottom_toTopOf="@+id/grid" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/calulatorScreen" /> <com.google.android.material.circularreveal.CircularRevealGridLayout android:id="@+id/grid" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="281dp" android:background="#E7FAF8" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"> <Button android:id="@+id/nine" android:layout_width="90dp" android:layout_height="90dp" android:layout_row="1" android:layout_column="0" android:layout_margin="0dp" android:background="#E7FAF8" android:fontFamily="sans-serif-smallcaps" android:includeFontPadding="true" android:text="@string/_9" android:textSize="@dimen/textsize" android:textStyle="italic" /> <Button android:id="@+id/eight" android:layout_width="90dp" android:layout_height="90dp" android:background="#E7FAF8" android:fontFamily="sans-serif-smallcaps" android:includeFontPadding="true" android:text="@string/_8" android:textSize="@dimen/textsize" android:textStyle="italic" /> <Button android:id="@+id/seven" android:layout_width="90dp" android:layout_height="90dp" android:background="#E7FAF8" android:fontFamily="sans-serif-smallcaps" android:includeFontPadding="true" android:text="@string/_7" android:textSize="@dimen/textsize" android:textStyle="italic" /> <Button android:id="@+id/substract" android:layout_width="142dp" android:layout_height="90dp" android:background="#E7FAF8" android:fontFamily="sans-serif-smallcaps" android:includeFontPadding="true" android:text="@string/substrat" android:textSize="@dimen/textsize" android:textStyle="italic" /> <Button android:id="@+id/six" android:layout_width="90dp" android:layout_height="90dp" android:layout_row="2" android:layout_column="0" android:background="#E7FAF8" android:fontFamily="sans-serif-smallcaps" android:includeFontPadding="true" android:text="@string/_6" android:textSize="@dimen/textsize" android:textStyle="italic" /> <Button android:id="@+id/five" android:layout_width="90dp" android:layout_height="90dp" android:background="#E7FAF8" android:fontFamily="sans-serif-smallcaps" android:includeFontPadding="true" android:text="@string/_5" android:textSize="@dimen/textsize" android:textStyle="italic" /> <Button android:id="@+id/four" android:layout_width="90dp" android:layout_height="90dp" android:background="#E7FAF8" android:fontFamily="sans-serif-smallcaps" android:includeFontPadding="true" android:text="@string/_4" android:textSize="@dimen/textsize" android:textStyle="italic" /> <Button android:id="@+id/add" android:layout_width="140dp" android:layout_height="90dp" android:background="#E7FAF8" android:fontFamily="sans-serif-smallcaps" android:includeFontPadding="true" android:text="@string/add" android:textSize="@dimen/textsize" android:textStyle="italic" /> <Button android:id="@+id/three" android:layout_width="wrap_content" android:layout_height="90dp" android:layout_row="3" android:layout_column="0" android:background="#E7FAF8" android:fontFamily="sans-serif-smallcaps" android:includeFontPadding="true" android:text="@string/three" android:textSize="@dimen/textsize" android:textStyle="italic" /> <Button android:id="@+id/two" android:layout_width="wrap_content" android:layout_height="90dp" android:layout_margin="0dp" android:background="#E7FAF8" android:fontFamily="sans-serif-smallcaps" android:includeFontPadding="true" android:text="@string/_2" android:textSize="@dimen/textsize" android:textStyle="italic" /> <Button android:id="@+id/one" android:layout_width="90dp" android:layout_height="90dp" android:layout_margin="0dp" android:background="#E7FAF8" android:fontFamily="sans-serif-smallcaps" android:includeFontPadding="true" android:text="@string/_1" android:textSize="@dimen/textsize" android:textStyle="italic" /> <Button android:id="@+id/mul" android:layout_width="140dp" android:layout_height="90dp" android:background="#E7FAF8" android:fontFamily="sans-serif-smallcaps" android:includeFontPadding="true" android:text="@string/multiply" android:textSize="@dimen/textsize" android:textStyle="italic" /> <Button android:id="@+id/clear" android:layout_width="90dp" android:layout_height="90dp" android:layout_row="0" android:layout_column="0" android:layout_margin="0dp" android:background="#E7FAF8" android:fontFamily="sans-serif-smallcaps" android:includeFontPadding="true" android:text="@string/clear" android:textSize="@dimen/textsize" android:textStyle="italic" /> <Button android:id="@+id/mod" android:layout_width="90dp" android:layout_height="90dp" android:layout_margin="0dp" android:background="#E7FAF8" android:fontFamily="sans-serif-smallcaps" android:includeFontPadding="true" android:text="@string/mod" android:textSize="@dimen/textsize" android:textStyle="italic" /> <ImageButton android:id="@+id/backspace" android:layout_width="90dp" android:layout_height="79dp" android:layout_row="0" android:layout_column="2" android:layout_margin="0dp" android:background="#E7FAF8" android:contentDescription="@string/backspace" android:src="?attr/actionModeCloseDrawable" /> <Button android:id="@+id/div" android:layout_width="140dp" android:layout_height="90dp" android:background="#E7FAF8" android:fontFamily="sans-serif-smallcaps" android:includeFontPadding="true" android:text="@string/divide" android:textSize="@dimen/textsize" android:textStyle="italic" /> <Button android:id="@+id/equals" android:layout_width="140dp" android:layout_height="90dp" android:layout_row="4" android:layout_column="3" android:background="#E7FAF8" android:fontFamily="sans-serif-smallcaps" android:includeFontPadding="true" android:text="@string/equals" android:textSize="@dimen/textsize" android:textStyle="italic" /> <Button android:id="@+id/dot" android:layout_width="90dp" android:layout_height="90dp" android:layout_row="4" android:layout_column="2" android:layout_margin="0dp" android:background="#E7FAF8" android:fontFamily="sans-serif-smallcaps" android:includeFontPadding="true" android:text="@string/dot" android:textSize="@dimen/textsize" android:textStyle="italic" /> <Button android:id="@+id/twozero" android:layout_width="90dp" android:layout_height="90dp" android:layout_row="4" android:layout_column="0" android:layout_margin="0dp" android:background="#E7FAF8" android:fontFamily="sans-serif-smallcaps" android:includeFontPadding="true" android:text="@string/doublezero" android:textSize="@dimen/textsize" android:textStyle="italic" /> <Button android:id="@+id/zero" android:layout_width="90dp" android:layout_height="90dp" android:layout_margin="0dp" android:background="#E7FAF8" android:fontFamily="sans-serif-smallcaps" android:includeFontPadding="true" android:text="@string/_0" android:textSize="@dimen/textsize" android:textStyle="italic" /> </com.google.android.material.circularreveal.CircularRevealGridLayout> </androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>'''
4。
    package com.example.calculator; public class Result { private double firstNumber=0; private double secondNumber; private char Operator; private double Answer; public double getAnswer(double A,double B,char O) { firstNumber= A; secondNumber=B; Operator = O; if (Operator =='+'){ secondNumber+=firstNumber;} else if (Operator =='-'){ secondNumber -= firstNumber; } else if (Operator =='*'){ secondNumber *= firstNumber; } else if (Operator =='/'){ secondNumber /= firstNumber; } else if (Operator=='%'){ secondNumber %= firstNumber; } return Answer; } }
android calculator oncreate
1个回答
0
投票
您必须先膨胀视图才能执行findViewById。下面的示例将导致崩溃,因为TextView view = findViewById(R.id.myText)onCreate方法之前执行,因此findViewById在布局膨胀之前执行。:

package me.a_hoffmann.findviewtest; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.widget.TextView; public class MainActivity extends AppCompatActivity { TextView view = findViewById(R.id.myText); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } }

在您的情况下,当创建活动对象时,您需要在视图膨胀之前对此两个视图执行findViewById

final TextView calculatorScreen = findViewById(R.id.calulatorScreen); final TextView answerScreen = findViewById(R.id.AnswerScreen);

您的活动找不到,因为尚未调用onCreate

这通常应该向您显示以下异常:

java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.pm.ApplicationInfo android.content.Context.getApplicationInfo()' on a null object reference

© www.soinside.com 2019 - 2024. All rights reserved.