为什么我的Android应用程序停止了?

时间:2017-06-30 23:36:15

标签: java android

我的项目无法在我的设备上打开,它说"不幸的是,myApp已停止"。

这是我的清单:

enter image description here

这是我的活动java:

package bismillah.project;


import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.content.Intent;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;


public class Project2Activity extends Activity {
    public static int a,b,c;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        //coding start here!!
        //input data
        EditText pek=(EditText)findViewById(R.id.editText1);
        String value=pek.getText().toString();
        final int pekerja=Integer.parseInt(value);
        EditText lam=(EditText)findViewById(R.id.editText2);
        String value1=lam.getText().toString();
        final int lama=Integer.parseInt(value1);
        EditText up=(EditText)findViewById(R.id.editText3);
        String value2=up.getText().toString();
        final int upah=Integer.parseInt(value2);
        EditText jum=(EditText)findViewById(R.id.editText4);
        String value3=jum.getText().toString();
        final int jumlah=Integer.parseInt(value3);
        //button proses
        Button button1=(Button)findViewById(R.id.Button1);
        button1.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Spinner bibit = (Spinner)findViewById(R.id.spinner1);
                TextView biaya = (TextView)findViewById(R.id.textView6);
                if(bibit.getSelectedItem().toString().equals("Cabai Rp.100")){
                    a=pekerja*(lama*upah)+(jumlah*100); 
                    biaya.setText("Biaya Rp." + a);
                if(bibit.getSelectedItem().toString().equals("Tomat Rp.150")){
                    a=pekerja*(lama*upah)+(jumlah*150); 
                    biaya.setText("Biaya Rp." + a);
                if(bibit.getSelectedItem().toString().equals("Timun Rp.200")){
                    a=pekerja*(lama*upah)+(jumlah*200); 
                    biaya.setText("Biaya Rp." + a);
                }
                }
                }
            }
        });
        //button reset
        Button button2=(Button)findViewById(R.id.Button2);
        button2.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                // TODO Auto-generated method stub
                TextView biaya = (TextView)findViewById(R.id.textView6);
                EditText pek=(EditText)findViewById(R.id.editText1);
                EditText lam=(EditText)findViewById(R.id.editText2);
                EditText up=(EditText)findViewById(R.id.editText3);
                EditText jum=(EditText)findViewById(R.id.editText4);
                pek.setText("");
                lam.setText("");
                up.setText("");
                jum.setText("");
                biaya.setText("");
            }
        });
        //button pindah activity
        Button button3=(Button)findViewById(R.id.Button3);
        button3.setOnClickListener(new View.OnClickListener() {
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                Intent i =new Intent(getApplicationContext(),activity2.class);
                startActivity(i);
            }
        });

    }
}

这是我的main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/bg"
    android:orientation="vertical" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginTop="10dp"
        android:text="@string/hello"
        android:textColor="@color/warna"
        android:textSize="20dp" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dp"
        android:layout_marginTop="10dp"
        android:text="Jumlah Pekerja :"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <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:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dp"
        android:text="Lama Kerja :"
        android:textAppearance="?android:attr/textAppearanceMedium" />

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

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dp"
        android:text="Upah :"
        android:textAppearance="?android:attr/textAppearanceMedium" />

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

    <TextView
        android:id="@+id/textView4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dp"
        android:text="Jenis Bibit :"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <Spinner
        android:id="@+id/spinner1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="15dp"
        android:entries="@array/list" />

    <TextView
        android:id="@+id/textView5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dp"
        android:text="Jumlah Bibit :"
        android:textAppearance="?android:attr/textAppearanceMedium" />

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

    <TextView
        android:id="@+id/textView6"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginTop="10dp"
        android:text="Large Text"
        android:textColor="@color/warna2"
        android:textAppearance="?android:attr/textAppearanceLarge" />

        <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/Button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:layout_marginTop="20dp"
            android:text="Proses" />


        <Button
            android:id="@+id/Button2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:text="Reset" />


        <Button
            android:id="@+id/Button3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:text="Hasil Panen" />


    </LinearLayout>

</LinearLayout>

1 个答案:

答案 0 :(得分:2)

我尝试了你的代码,我不得不从你的XML文件中删除一些东西,因为它创建了一些bug。它可能与我有关,但这是我能够使用的XML:

但请在尝试下面的解决方案之前不要更改XML文件。如果它仍然不起作用,你应该考虑我删除的元素。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >












    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginTop="10dp"
        android:text="hello"
        android:textSize="20dp" />





    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dp"
        android:layout_marginTop="10dp"
        android:text="Jumlah Pekerja :"
        android:textAppearance="?android:attr/textAppearanceMedium" />


    <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:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dp"
        android:text="Lama Kerja :"
        android:textAppearance="?android:attr/textAppearanceMedium" />

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



    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dp"
        android:text="Upah :"
        android:textAppearance="?android:attr/textAppearanceMedium" />

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



    <TextView
        android:id="@+id/textView4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dp"
        android:text="Jenis Bibit :"
        android:textAppearance="?android:attr/textAppearanceMedium" />




    <Spinner
        android:id="@+id/spinner1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="15dp" />



    <TextView
        android:id="@+id/textView5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dp"
        android:text="Jumlah Bibit :"
        android:textAppearance="?android:attr/textAppearanceMedium" />

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




    <TextView
        android:id="@+id/textView6"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginTop="10dp"
        android:text="Large Text"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/Button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:layout_marginTop="20dp"
            android:text="Proses" />


        <Button
            android:id="@+id/Button2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:text="Reset" />


        <Button
            android:id="@+id/Button3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:text="Hasil Panen" />


    </LinearLayout>

</LinearLayout>

接下来,我创建了你的Project2Activity java类和activity2(因为你没有提供任何关于它的信息,所以很空了。)

因此,在尝试运行应用程序时,会出现以下错误:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.application.so/com.example.application.so.Project2Activity}: java.lang.NumberFormatException: For input string: ""

它位于:

at com.example.application.so.Project2Activity.onCreate(Project2Activity.java:24)

现在如果我们考虑第23和24行:

String value=pek.getText().toString();  // line 23
final int pekerja=Integer.parseInt(value);  // line 24

错误是您在创建活动时尝试读取(第23行)您的editText值,此时,您的editText仍为空白,这意味着值将等于&#34;&#34; (空字符串)。

你要做的是在按钮点击事件中将你的行从22放到33(下面的那些),我尝试将它们放在你的按钮1点击事件中,你的应用程序不会再崩溃:

EditText pek=(EditText)findViewById(R.id.editText1);
String value=pek.getText().toString();
final int pekerja=Integer.parseInt(value);
EditText lam=(EditText)findViewById(R.id.editText2);
String value1=lam.getText().toString();
final int lama=Integer.parseInt(value1);
EditText up=(EditText)findViewById(R.id.editText3);
String value2=up.getText().toString();
final int upah=Integer.parseInt(value2);
EditText jum=(EditText)findViewById(R.id.editText4);
String value3=jum.getText().toString();
final int jumlah=Integer.parseInt(value3);

总而言之,问题在于您从editTexts中提取空字符串并尝试从中创建整数。相反,尝试通过单击按钮来完成所有读取和整数提取过程,您真正需要这些输入。就像得到输入和最后时刻一样。

你应该注意你的logcat(错误信息),这是非常有帮助的。

您还可以做的是验证您的editTexts在尝试从中提取字符串时不为空并引发异常,如果它们为空,则验证Toast。没有什么太复杂的东西像:

if (value.equals("")):
    // editText is empty so do something

您可以参考此link以进一步了解如何知道editText何时为空。