Android Studio中的成功构建仍然会在设备上崩溃
我基本上还是个初学者,我试着制作一个应用程序来简化我在实验室的工作。这只是一些基本的计算。我想制作一个与大多数设备兼容的应用程序,以防它包含有用的信息。尽管这个应用程序似乎构建成功,但一旦在我的设备上启动,它就会立即崩溃。下面列出了使用的文件。我尝试了Android Studio给我的所有提示,但没有结果。应用程序仍然崩溃 非常感谢您的提示和建设性反馈Android Studio中的成功构建仍然会在设备上崩溃,android,android-studio,crash,Android,Android Studio,Crash,我基本上还是个初学者,我试着制作一个应用程序来简化我在实验室的工作。这只是一些基本的计算。我想制作一个与大多数设备兼容的应用程序,以防它包含有用的信息。尽管这个应用程序似乎构建成功,但一旦在我的设备上启动,它就会立即崩溃。下面列出了使用的文件。我尝试了Android Studio给我的所有提示,但没有结果。应用程序仍然崩溃 非常感谢您的提示和建设性反馈 Main Activity.java package com.e.concalc; import androidx.appcompat.ap
Main Activity.java
package com.e.concalc;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private EditText protein_sp;
private EditText salt_sp;
private EditText protein_st;
private EditText salt_st;
private EditText volume_sp;
private TextView tv_resultH2O;
private TextView tv_resultSalt;
private TextView tv_resultProtein;
private Button button1;
public MainActivity(TextView tv_resultH2O, TextView tv_resultSalt, TextView tv_resultProtein, Button button1) {
this.tv_resultH2O = tv_resultH2O;
this.tv_resultSalt = tv_resultSalt;
this.tv_resultProtein = tv_resultProtein;
this.button1 = button1;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
protein_sp = findViewById(R.id.edit1);
protein_st = findViewById(R.id.edit2);
salt_sp = findViewById(R.id.edit3);
salt_st = findViewById(R.id.edit4);
volume_sp = findViewById(R.id.edit5);
button1.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
makeCalculations();
}
});
}
private void makeCalculations() {
double p_sp = Double.valueOf(protein_sp.getText().toString());
double p_st = Double.valueOf(protein_st.getText().toString());
double s_sp = Double.valueOf(salt_sp.getText().toString());
double s_st = Double.valueOf(salt_st.getText().toString());
double v_sp = Double.valueOf(volume_sp.getText().toString());
double resultH2O;
double resultSalt;
double resultProtein;
resultProtein = p_sp * v_sp / p_st;
resultSalt = s_sp * v_sp / s_st;
resultH2O = v_sp - resultProtein - resultSalt;
tv_resultH2O.setText(Double.toString(resultH2O));
tv_resultSalt.setText(Double.toString(resultSalt));
tv_resultProtein.setText(Double.toString(resultProtein));
}
}
活动\u main.xml-布局
<?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"
android:orientation="vertical"
tools:context=".MainActivity">
<TextView
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/Protein1"
android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintHorizontal_bias="0.133"
app:layout_constraintVertical_bias="0.070" />
<TextView
android:id="@+id/text2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/Protein2"
android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.77"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.070" />
<TextView
android:id="@+id/text4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/Salt1"
android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="@+id/text2"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.21" />
<TextView
android:id="@+id/text3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/Salt2"
android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="@+id/text1"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.21" />
<TextView
android:id="@+id/text5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/SampleVolume"
android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="@+id/text3"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.35" />
<EditText
android:id="@+id/edit1"
android:layout_width="100dp"
android:layout_height="40dp"
android:textSize="15sp"
android:inputType="number"
android:hint="@string/hint"
app:layout_constraintStart_toStartOf="@+id/text1"
app:layout_constraintTop_toBottomOf="@+id/text1"
android:importantForAutofill="no" />
<EditText
android:id="@id/edit2"
android:layout_width="100dp"
android:layout_height="40dp"
android:textSize="15sp"
android:inputType="number"
android:hint="@string/hint"
app:layout_constraintStart_toStartOf="@+id/text2"
app:layout_constraintTop_toBottomOf="@+id/text2"
android:importantForAutofill="no" />
<EditText
android:id="@id/edit4"
android:layout_width="100dp"
android:layout_height="40dp"
android:textSize="15sp"
android:inputType="number"
android:hint="@string/hint"
app:layout_constraintStart_toStartOf="@+id/text4"
app:layout_constraintTop_toBottomOf="@+id/text4"
android:importantForAutofill="no" />
<EditText
android:id="@id/edit3"
android:layout_width="100dp"
android:layout_height="40dp"
android:textSize="15sp"
android:inputType="number"
android:hint="@string/hint"
app:layout_constraintStart_toStartOf="@+id/text3"
app:layout_constraintTop_toBottomOf="@+id/text3"
android:importantForAutofill="no" />
<EditText
android:id="@+id/edit5"
android:layout_width="100dp"
android:layout_height="40dp"
android:textSize="15sp"
android:inputType="number"
android:hint="@string/hint"
app:layout_constraintStart_toStartOf="@+id/text5"
app:layout_constraintTop_toBottomOf="@+id/text5"
android:importantForAutofill="no" />
<Button
android:id="@+id/button1"
android:layout_width="120dp"
android:layout_height="40dp"
android:layout_marginBottom="128dp"
android:text="@string/button1"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.158"
app:layout_constraintStart_toStartOf="parent" />
<Button
android:id="@+id/button2"
android:layout_width="120dp"
android:layout_height="40dp"
android:layout_marginStart="51dp"
android:layout_marginLeft="51dp"
android:text="@string/button2"
app:layout_constraintBottom_toBottomOf="@+id/button1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.745"
app:layout_constraintStart_toEndOf="@+id/button1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/button1" />
<TextView
android:id="@+id/tv_resultH2O"
android:layout_width="100dp"
android:layout_height="50dp"
android:layout_centerInParent="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintHorizontal_bias="0.1"
app:layout_constraintVertical_bias="0.6"/>
<TextView
android:id="@+id/tv_resultSalt"
android:layout_width="100dp"
android:layout_height="50dp"
android:layout_centerInParent="true"
android:textAppearance="?android:attr/textAppearanceLarge"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintVertical_bias="0.6"/>
<TextView
android:id="@+id/tv_resultProtein"
android:layout_width="100dp"
android:layout_height="50dp"
android:layout_centerInParent="true"
android:textAppearance="?android:attr/textAppearanceLarge"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintHorizontal_bias="0.9"
app:layout_constraintVertical_bias="0.6"/>
</androidx.constraintlayout.widget.ConstraintLayout>
您忘记了查找视图ID按钮1。因此在
onCreate
方法中,在按钮1.setOnClickListener
之前。。。。添加此行:
button1 = findViewById(R.id.button1);
您忘记了查找视图ID按钮1。因此在
onCreate
方法中,在button1.setOnClickListener
之前。。。。添加此行:
button1 = findViewById(R.id.button1);
删除自定义构造函数
活动必须具有Android用于创建类的无参数构造函数,当您定义任何重写时,无参数构造函数将不再在Java中自动为您创建…删除自定义构造函数
活动必须具有Android用于创建类的无参数构造函数,当您定义任何重写时,无参数构造函数将不再在Java中自动为您创建…如果您在Java中使用其他视图,请对其执行相同操作,而不仅仅是编辑文本。非常感谢!这真的解决了我的问题!如果您在java中使用其他视图,请对它们执行相同的操作,而不仅仅是编辑文本。非常感谢!这真的解决了我的问题!您在哪里初始化MainActivity的构造函数。Android不像任何UI元素那样工作,比如你的文本视图需要由findViewById初始化(它需要存在于你在setContentView中指定的布局中)@peco说了同样的话,这很有帮助。谢谢您在哪里初始化MainActivity的构造函数。Android不像任何UI元素那样工作,比如你的文本视图需要由findViewById初始化(它需要存在于你在setContentView中指定的布局中)@peco说了同样的话,这很有帮助。谢谢谢谢,在我删除自定义构造函数后,它仍然崩溃。我认为你的回答仍然对我的问题有帮助。非常感谢。谢谢,在我删除自定义构造函数后,它仍然崩溃。我认为你的回答仍然对我的问题有帮助。非常感谢。