【问题标题】:Android: Unfortunately <app name> has stoppedAndroid:不幸的是 <app name> 已停止
【发布时间】:2026-01-26 19:50:01
【问题描述】:

我是 android 开发的新手,这只是我为了打发时间而构建的第二个应用程序,不过,我不明白是什么导致了这个错误。需要专家建议

activity_starting_point.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".StatingPoint" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="35dp"
        android:text="Enter Number 1"
          android:id="@+id/tvDisplay"
           />

    <EditText
        android:id="@+id/editText1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="number" >

        <requestFocus />
    </EditText>

    <TextView

        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="35dp"
        android:text="Enter Number 2" 
          android:id="@+id/tvDisplay"
        />

    <EditText
        android:id="@+id/editText2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="number" />

    <Button
        android:id="@+id/button1"
        android:layout_width="250dp"
        android:layout_height="wrap_content"
        android:text="Add"
        android:layout_gravity="center" />

    <Button
        android:id="@+id/button1"
        android:layout_width="250dp"
        android:layout_height="wrap_content"
        android:text="Subtract"
        android:layout_gravity="center" />

       <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=" Your Total is 0 "  
        android:textSize="45dp"
        android:layout_gravity="center"
        android:gravity="center"
        android:id="@+id/tvDisplay" />

</LinearLayout>

Java 类文件:StartingPoint.java 包 com.ankur.calulator;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;


public class StatingPoint extends Activity {


    int num1,num2;
    int total;
    Button add,sub;
    TextView display;
    EditText no1,no2;



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

        total=0;
        no1=(EditText) findViewById(R.id.editText1);
        no2=(EditText) findViewById(R.id.editText2);
        display=(TextView)findViewById(R.id.tvDisplay);

        add.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub

                total=num1+num2;
                display.setText("Your Total is "+total);

            }
        });

        sub.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub

                total=num1-num2;
                display.setText("Your Total is "+total);

            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_stating_point, menu);
        return true;
    }

}

logcat 文件: 它是空白的,我想我搞砸了,虽然我之前看到过 java 空指针异常 我知道我很接近,只是无法找到一些缺失的链接,需要建议。

【问题讨论】:

    标签: java android xml android-emulator


    【解决方案1】:

    你还没有像 no1,no1display 那样初始化 addsub

    你试图在 addsub 上调用 setOnClickListener 而不进行初始化,所以你得到一个 NullPointerException

    您需要为addsub提供不同的id并对其进行初始化。

    【讨论】:

      【解决方案2】:

      在您的 activity_starting_point.xml 中,您有:

      • 3 个具有相同 id 的 TextView:tvDisplay
      • 2 个 id 相同的按钮:button1

      请分配唯一且有意义的 ID,以便稍后在您的 java 代码中引用它们,例如:

      android:id="@+id/btAdd"
      

      android:id="@+id/btSubtract"
      

      (注意:您实际上不需要带有说明的 TextView 的 id,例如所有那些 tvDisplay,除非您想在 Java 中实际引用它们,例如更改说明文本)

      接下来,正如 Apoorv 所发现的,当您初始化 no1 和 no2 时,您不会使用 add 和 sub 来执行此操作,因此它们为空。只需以与上述相同的方式初始化它们即可:

      add = (Button) findViewById(R.id.btAdd);
      

      sub = (Button) findViewById(R.id.btSubtract);
      

      此外,在您的 OnClickListeners 中,您的计算将始终产生 0 的总数,因为在代码中您实际上没有得到 num1 和 num2 的值。您可能想要执行以下操作:

      num1 = Integer.parseInt(no1.getText().toString());
      num2 = Integer.parseInt(no2.getText().toString());
      

      【讨论】:

        最近更新 更多