应用程序崩溃了,不知道为什么?

时间:2011-08-28 10:31:21

标签: android button crash

我有一个在模拟器上运行正常的应用程序,我试图在我的手机上安装它并且它运行良好,但在Android市场上我收到了8个崩溃报告。人们抱怨应用程序在我最新版本升级的按钮点击时崩溃。在我的手机上一切都很好。我怎样才能找到问题所在?

的NullPointerException 在bonbon2 $ 1.onClick()

java.lang.NullPointerException
at cro.perger.bonbon.bonbon2$1.onClick(bonbon2.java:64)
at android.view.View.performClick(View.java:2501)
at android.view.View$PerformClick.run(View.java:9111)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3835)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605)
at dalvik.system.NativeStart.main(Native Method)

java.lang.NullPointerException
at cro.perger.bonbon.bonbon2$1.onClick(bonbon2.java:56)
at android.view.View.performClick(View.java:2408)
at android.view.View$PerformClick.run(View.java:8816)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4633)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
at dalvik.system.NativeStart.main(Native Method)

java.lang.NullPointerException
at cro.perger.bonbon.bonbon2$1.onClick(bonbon2.java:48)
at android.view.View.performClick(View.java:2408)
at android.view.View$PerformClick.run(View.java:8816)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4633)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
at dalvik.system.NativeStart.main(Native Method)

编辑:

这是导致问题的文件代码bonbon2.java

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;

public class bonbon2 extends Activity 
{

    Button btnKombinacija;
    EditText text1;
    Context context=this;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main2);


        btnKombinacija = (Button) findViewById(R.id.button1);

        btnKombinacija.setOnClickListener(new View.OnClickListener() 
        {
            public void onClick(View v) 
            {   
                CheckBox maliRazgovori = (CheckBox) findViewById(R.id.checkBox3);
                CheckBox maliSMS = (CheckBox) findViewById(R.id.checkBox5);
                CheckBox maliInternet = (CheckBox) findViewById(R.id.checkBox8);
                CheckBox srednjiRazgovori = (CheckBox) findViewById(R.id.checkBox2);
                CheckBox srednjiSMS = (CheckBox) findViewById(R.id.checkBox6);
                CheckBox srednjiInternet = (CheckBox) findViewById(R.id.checkBox9);
                CheckBox velikiRazgovori = (CheckBox) findViewById(R.id.checkBox1);
                CheckBox velikiSMS = (CheckBox) findViewById(R.id.checkBox4);
                CheckBox velikiInternet = (CheckBox) findViewById(R.id.checkBox7);
                text1 = (EditText) findViewById(R.id.editText1);

                *if (maliRazgovori.isChecked() == true && maliSMS.isChecked() == false && maliInternet.isChecked() == false 
                        && srednjiRazgovori.isChecked() == false && srednjiSMS.isChecked() == false && srednjiInternet.isChecked() == false 
                        && velikiRazgovori.isChecked() == false && velikiSMS.isChecked() == false && velikiInternet.isChecked() == false) {*

                            String kombinacija = "Odabrana kombinacija sadrži (20 minuta prema svim mrežama) i cijena joj je 10kn.";
                            text1.setText(String
                                    .valueOf(kombinacija));

                *} else if (maliRazgovori.isChecked() == false && maliSMS.isChecked() == true && maliInternet.isChecked() == false 
                        && srednjiRazgovori.isChecked() == false && srednjiSMS.isChecked() == false && srednjiInternet.isChecked() == false 
                        && velikiRazgovori.isChecked() == false && velikiSMS.isChecked() == false && velikiInternet.isChecked() == false) {*

                            String kombinacija = "Odabrana kombinacija sadrži (60 SMS-ova prema svim mrežama) i cijena joj je 10kn";
                            text1.setText(String
                                    .valueOf(kombinacija));

                *} else if (maliRazgovori.isChecked() == false && maliSMS.isChecked() == false && maliInternet.isChecked() == true 
                        && srednjiRazgovori.isChecked() == false && srednjiSMS.isChecked() == false && srednjiInternet.isChecked() == false 
                        && velikiRazgovori.isChecked() == false && velikiSMS.isChecked() == false && velikiInternet.isChecked() == false) {*

                            String kombinacija = "Odabrana kombinacija sadrži (50 MB prometa) i cijena joj je 10kn";
                            text1.setText(String
                                    .valueOf(kombinacija));

                } else if (maliRazgovori.isChecked() == false && maliSMS.isChecked() == false && maliInternet.isChecked() == false 
                        && srednjiRazgovori.isChecked() == true && srednjiSMS.isChecked() == false && srednjiInternet.isChecked() == false 
                        && velikiRazgovori.isChecked() == false && velikiSMS.isChecked() == false && velikiInternet.isChecked() == false) {

                            String kombinacija = "Odabrana kombinacija sadrži (80 minuta prema svim mrežama) i cijena joj je 30kn";
                            text1.setText(String
                                    .valueOf(kombinacija));

                } else if (maliRazgovori.isChecked() == false && maliSMS.isChecked() == false && maliInternet.isChecked() == false 
                        && srednjiRazgovori.isChecked() == false && srednjiSMS.isChecked() == true && srednjiInternet.isChecked() == false 
                        && velikiRazgovori.isChecked() == false && velikiSMS.isChecked() == false && velikiInternet.isChecked() == false) {

                            String kombinacija = "Odabrana kombinacija sadrži (200 SMS-ova prema svim mrežama) i cijena joj je 30kn";
                            text1.setText(String
                                    .valueOf(kombinacija));

                } else if (maliRazgovori.isChecked() == false && maliSMS.isChecked() == false && maliInternet.isChecked() == false 
                        && srednjiRazgovori.isChecked() == false && srednjiSMS.isChecked() == false && srednjiInternet.isChecked() == true 
                        && velikiRazgovori.isChecked() == false && velikiSMS.isChecked() == false && velikiInternet.isChecked() == false) {

                            String kombinacija = "Odabrana kombinacija sadrži (300 MB prometa) i cijena joj je 30kn";
                            text1.setText(String
                                    .valueOf(kombinacija));

                } else if (maliRazgovori.isChecked() == false && maliSMS.isChecked() == false && maliInternet.isChecked() == false 
                        && srednjiRazgovori.isChecked() == false && srednjiSMS.isChecked() == false && srednjiInternet.isChecked() == false 
                        && velikiRazgovori.isChecked() == true && velikiSMS.isChecked() == false && velikiInternet.isChecked() == false) {

                            String kombinacija = "Odabrana kombinacija sadrži (200 minuta izvan mreže, 300 minuta u mreži) i cijena joj je 60kn";
                            text1.setText(String
                                    .valueOf(kombinacija));

                } else if (maliRazgovori.isChecked() == false && maliSMS.isChecked() == false && maliInternet.isChecked() == false 
                        && srednjiRazgovori.isChecked() == false && srednjiSMS.isChecked() == false && srednjiInternet.isChecked() == false 
                        && velikiRazgovori.isChecked() == false && velikiSMS.isChecked() == true && velikiInternet.isChecked() == false) {

                            String kombinacija = "Odabrana kombinacija sadrži (500 SMS-ova prema svim mrežama) i cijena joj je 60kn";
                            text1.setText(String
                                    .valueOf(kombinacija));

                } else if (maliRazgovori.isChecked() == false && maliSMS.isChecked() == false && maliInternet.isChecked() == false 
                        && srednjiRazgovori.isChecked() == false && srednjiSMS.isChecked() == false && srednjiInternet.isChecked() == false 
                        && velikiRazgovori.isChecked() == false && velikiSMS.isChecked() == false && velikiInternet.isChecked() == true) {

                            String kombinacija = "Odabrana kombinacija sadrži (1 GB prometa) i cijena joj je 60kn";
                            text1.setText(String
                                    .valueOf(kombinacija));

                }else if (maliRazgovori.isChecked() == true && maliSMS.isChecked() == true && maliInternet.isChecked() == false 
                        && srednjiRazgovori.isChecked() == false && srednjiSMS.isChecked() == false && srednjiInternet.isChecked() == false 
                        && velikiRazgovori.isChecked() == false && velikiSMS.isChecked() == false && velikiInternet.isChecked() == false) {

                            String kombinacija = "Odabrana kombinacija sadrži (20 minuta prema svim mrežama, 60 SMS-ova prema svim mrežama) i cijena joj je 20kn";
                            text1.setText(String
                                    .valueOf(kombinacija));

                }  else if (maliRazgovori.isChecked() == true && maliSMS.isChecked() == false && maliInternet.isChecked() == false 
                        && srednjiRazgovori.isChecked() == false && srednjiSMS.isChecked() == true && srednjiInternet.isChecked() == false 
                        && velikiRazgovori.isChecked() == false && velikiSMS.isChecked() == false && velikiInternet.isChecked() == false) {

                            String kombinacija = "Odabrana kombinacija sadrži (20 minuta prema svim mrežama, 200 SMS-ova prema svim mrežama) i cijena joj je 40kn";
                            text1.setText(String
                                    .valueOf(kombinacija));

                } else if (maliRazgovori.isChecked() == true && maliSMS.isChecked() == false && maliInternet.isChecked() == false 
                        && srednjiRazgovori.isChecked() == false && srednjiSMS.isChecked() == false && srednjiInternet.isChecked() == false 
                        && velikiRazgovori.isChecked() == false && velikiSMS.isChecked() == true && velikiInternet.isChecked() == false) {

                            String kombinacija = "Odabrana kombinacija sadrži (20 minuta prema svim mrežama, 500 SMS-ova prema svim mrežama) i cijena joj je 70kn";
                            text1.setText(String
                                    .valueOf(kombinacija));

                } else if (maliRazgovori.isChecked() == true && maliSMS.isChecked() == false && maliInternet.isChecked() == true 
                        && srednjiRazgovori.isChecked() == false && srednjiSMS.isChecked() == false && srednjiInternet.isChecked() == false 
                        && velikiRazgovori.isChecked() == false && velikiSMS.isChecked() == false && velikiInternet.isChecked() == false) {

                            String kombinacija = "Odabrana kombinacija sadrži (20 minuta prema svim mrežama, 50 MB prometa) i cijena joj je 20kn";
                            text1.setText(String
                                    .valueOf(kombinacija));

                } else if (maliRazgovori.isChecked() == true && maliSMS.isChecked() == false && maliInternet.isChecked() == false 
                        && srednjiRazgovori.isChecked() == false && srednjiSMS.isChecked() == false && srednjiInternet.isChecked() == true 
                        && velikiRazgovori.isChecked() == false && velikiSMS.isChecked() == false && velikiInternet.isChecked() == false) {

                            String kombinacija = "Odabrana kombinacija sadrži (20 minuta prema svim mrežama, 300 MB prometa) i cijena joj je 40kn";
                            text1.setText(String
                                    .valueOf(kombinacija));

                } else if (maliRazgovori.isChecked() == true && maliSMS.isChecked() == false && maliInternet.isChecked() == false 
                        && srednjiRazgovori.isChecked() == false && srednjiSMS.isChecked() == false && srednjiInternet.isChecked() == false 
                        && velikiRazgovori.isChecked() == false && velikiSMS.isChecked() == false && velikiInternet.isChecked() == true) {

                            String kombinacija = "Odabrana kombinacija sadrži (20 minuta prema svim mrežama, 1 GB prometa) i cijena joj je 70kn";
                            text1.setText(String
                                    .valueOf(kombinacija));

                } else if (maliRazgovori.isChecked() == false && maliSMS.isChecked() == true && maliInternet.isChecked() == false 
                        && srednjiRazgovori.isChecked() == true && srednjiSMS.isChecked() == false && srednjiInternet.isChecked() == false 
                        && velikiRazgovori.isChecked() == false && velikiSMS.isChecked() == false && velikiInternet.isChecked() == false) {

                            String kombinacija = "Odabrana kombinacija sadrži (80 minuta prema svim mrežama, 60 SMS-ova prema svim mrežama) i cijena joj je 40kn";
                            text1.setText(String
                                    .valueOf(kombinacija));

                } else if (maliRazgovori.isChecked() == false && maliSMS.isChecked() == false && maliInternet.isChecked() == false 
                        && srednjiRazgovori.isChecked() == true && srednjiSMS.isChecked() == true && srednjiInternet.isChecked() == false 
                        && velikiRazgovori.isChecked() == false && velikiSMS.isChecked() == false && velikiInternet.isChecked() == false) {

                            String kombinacija = "Odabrana kombinacija sadrži (80 minuta prema svim mrežama, 200 SMS-ova prema svim mrežama) i cijena joj je 60kn";
                            text1.setText(String
                                    .valueOf(kombinacija));

                } else if (maliRazgovori.isChecked() == false && maliSMS.isChecked() == false && maliInternet.isChecked() == false 
                        && srednjiRazgovori.isChecked() == true && srednjiSMS.isChecked() == false && srednjiInternet.isChecked() == false 
                        && velikiRazgovori.isChecked() == false && velikiSMS.isChecked() == true && velikiInternet.isChecked() == false) {

                            String kombinacija = "Odabrana kombinacija sadrži (80 minuta prema svim mrežama, 500 SMS-ova prema svim mrežama) i cijena joj je 90kn";
                            text1.setText(String
                                    .valueOf(kombinacija));

                } else if (maliRazgovori.isChecked() == false && maliSMS.isChecked() == false && maliInternet.isChecked() == true 
                        && srednjiRazgovori.isChecked() == true && srednjiSMS.isChecked() == false && srednjiInternet.isChecked() == false 
                        && velikiRazgovori.isChecked() == false && velikiSMS.isChecked() == false && velikiInternet.isChecked() == false) {

                            String kombinacija = "Odabrana kombinacija sadrži (80 minuta prema svim mrežama, 50 MB prometa) i cijena joj je 40kn";
                            text1.setText(String
                                    .valueOf(kombinacija));

                } else if (maliRazgovori.isChecked() == false && maliSMS.isChecked() == false && maliInternet.isChecked() == false 
                        && srednjiRazgovori.isChecked() == true && srednjiSMS.isChecked() == false && srednjiInternet.isChecked() == true 
                        && velikiRazgovori.isChecked() == false && velikiSMS.isChecked() == false && velikiInternet.isChecked() == false) {

                            String kombinacija = "Odabrana kombinacija sadrži (80 minuta prema svim mrežama, 300 MB prometa) i cijena joj je 60kn";
                            text1.setText(String
                                    .valueOf(kombinacija));

                } else if (maliRazgovori.isChecked() == false && maliSMS.isChecked() == false && maliInternet.isChecked() == false 
                        && srednjiRazgovori.isChecked() == true && srednjiSMS.isChecked() == false && srednjiInternet.isChecked() == false 
                        && velikiRazgovori.isChecked() == false && velikiSMS.isChecked() == false && velikiInternet.isChecked() == true) {

                            String kombinacija = "Odabrana kombinacija sadrži (80 minuta prema svim mrežama, 1 GB prometa) i cijena joj je 90kn";
                            text1.setText(String
                                    .valueOf(kombinacija));

                } else if (maliRazgovori.isChecked() == false && maliSMS.isChecked() == true && maliInternet.isChecked() == false 
                        && srednjiRazgovori.isChecked() == false && srednjiSMS.isChecked() == false && srednjiInternet.isChecked() == false 
                        && velikiRazgovori.isChecked() == true && velikiSMS.isChecked() == false && velikiInternet.isChecked() == false) {

                            String kombinacija = "Odabrana kombinacija sadrži (200 minuta izvan mreže, 300 minuta u mreži, 60 SMS-ova prema svim mrežama) i cijena joj je 70kn";
                            text1.setText(String
                                    .valueOf(kombinacija));

                } else if (maliRazgovori.isChecked() == false && maliSMS.isChecked() == false && maliInternet.isChecked() == false 
                        && srednjiRazgovori.isChecked() == false && srednjiSMS.isChecked() == true && srednjiInternet.isChecked() == false 
                        && velikiRazgovori.isChecked() == true && velikiSMS.isChecked() == false && velikiInternet.isChecked() == false) {

                            String kombinacija = "Odabrana kombinacija sadrži (200 minuta izvan mreže, 300 minuta u mreži, 200 SMS-ova prema svim mrežama) i cijena joj je 90kn";
                            text1.setText(String
                                    .valueOf(kombinacija));

                } else if (maliRazgovori.isChecked() == false && maliSMS.isChecked() == false && maliInternet.isChecked() == false 
                        && srednjiRazgovori.isChecked() == false && srednjiSMS.isChecked() == false && srednjiInternet.isChecked() == false 
                        && velikiRazgovori.isChecked() == true && velikiSMS.isChecked() == true && velikiInternet.isChecked() == false) {

                            String kombinacija = "Odabrana kombinacija sadrži (200 minuta izvan mreže, 300 minuta u mreži, 500 SMS-ova prema svim mrežama) i cijena joj je 120kn";
                            text1.setText(String
                                    .valueOf(kombinacija));

                } else if (maliRazgovori.isChecked() == false && maliSMS.isChecked() == false && maliInternet.isChecked() == true 
                        && srednjiRazgovori.isChecked() == false && srednjiSMS.isChecked() == false && srednjiInternet.isChecked() == false 
                        && velikiRazgovori.isChecked() == true && velikiSMS.isChecked() == false && velikiInternet.isChecked() == false) {

                            String kombinacija = "Odabrana kombinacija sadrži (200 minuta izvan mreže, 300 minuta u mreži, 50 MB prometa) i cijena joj je 70kn";
                            text1.setText(String
                                    .valueOf(kombinacija));

                } else if (maliRazgovori.isChecked() == false && maliSMS.isChecked() == false && maliInternet.isChecked() == false 
                        && srednjiRazgovori.isChecked() == false && srednjiSMS.isChecked() == false && srednjiInternet.isChecked() == true 
                        && velikiRazgovori.isChecked() == true && velikiSMS.isChecked() == false && velikiInternet.isChecked() == false) {

                            String kombinacija = "Odabrana kombinacija sadrži (200 minuta izvan mreže, 300 minuta u mreži, 300 MB prometa) i cijena joj je 90kn";
                            text1.setText(String
                                    .valueOf(kombinacija));

                } else if (maliRazgovori.isChecked() == false && maliSMS.isChecked() == false && maliInternet.isChecked() == false 
                        && srednjiRazgovori.isChecked() == false && srednjiSMS.isChecked() == false && srednjiInternet.isChecked() == false 
                        && velikiRazgovori.isChecked() == true && velikiSMS.isChecked() == false && velikiInternet.isChecked() == true) {

                            String kombinacija = "Odabrana kombinacija sadrži (200 minuta izvan mreže, 300 minuta u mreži, 1 GB prometa) i cijena joj je 120kn";
                            text1.setText(String
                                    .valueOf(kombinacija));

                } else if (maliRazgovori.isChecked() == false && maliSMS.isChecked() == true && maliInternet.isChecked() == true 
                        && srednjiRazgovori.isChecked() == false && srednjiSMS.isChecked() == false && srednjiInternet.isChecked() == false 
                        && velikiRazgovori.isChecked() == false && velikiSMS.isChecked() == false && velikiInternet.isChecked() == false) {

                            String kombinacija = "Odabrana kombinacija sadrži (60 SMS-ova prema svim mrežama, 50 MB prometa) i cijena joj je 20kn";
                            text1.setText(String
                                    .valueOf(kombinacija));

                } else if (maliRazgovori.isChecked() == false && maliSMS.isChecked() == true && maliInternet.isChecked() == false 
                        && srednjiRazgovori.isChecked() == false && srednjiSMS.isChecked() == false && srednjiInternet.isChecked() == true 
                        && velikiRazgovori.isChecked() == false && velikiSMS.isChecked() == false && velikiInternet.isChecked() == false) {

                            String kombinacija = "Odabrana kombinacija sadrži (60 SMS-ova prema svim mrežama, 300 MB prometa) i cijena joj je 40kn";
                            text1.setText(String
                                    .valueOf(kombinacija));

                } else if (maliRazgovori.isChecked() == false && maliSMS.isChecked() == true && maliInternet.isChecked() == false 
                        && srednjiRazgovori.isChecked() == false && srednjiSMS.isChecked() == false && srednjiInternet.isChecked() == false 
                        && velikiRazgovori.isChecked() == false && velikiSMS.isChecked() == false && velikiInternet.isChecked() == true) {

                            String kombinacija = "Odabrana kombinacija sadrži (60 SMS-ova prema svim mrežama, 1 GB prometa) i cijena joj je 70kn";
                            text1.setText(String
                                    .valueOf(kombinacija));

                } else if (maliRazgovori.isChecked() == false && maliSMS.isChecked() == false && maliInternet.isChecked() == false 
                        && srednjiRazgovori.isChecked() == true && srednjiSMS.isChecked() == false && srednjiInternet.isChecked() == false 
                        && velikiRazgovori.isChecked() == false && velikiSMS.isChecked() == true && velikiInternet.isChecked() == true) {

                            String kombinacija = "Odabrana kombinacija sadrži (80 minuta prema svim mrežama, 500 SMS-ova prema svim mrežama, 1 GB prometa) i cijena joj je 150kn";
                            text1.setText(String
                                    .valueOf(kombinacija));

                }else {

                            String kombinacija = "Odabrana kombinacija nije dobra, molim odaberi ponovo!";
                            text1.setText(String
                                    .valueOf(kombinacija));

                }


                }
        });
    }
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu2, menu);
        return true;
    }

    public boolean onOptionsItemSelected(MenuItem item) {
       switch (item.getItemId()) {
            case R.id.about:    
                AlertDialog alertDialog = new AlertDialog.Builder(this).create();
                alertDialog.setTitle("Paketi - info");
                StringBuilder sb = new StringBuilder();
                sb.append("Kao i inače u bonbonu, ni u jednoj od ovih kombinacija ne plaćaš naknadu za uspostavu poziva :-) " +
                        "Obračunska jedinica za pozive je 1 sekunda, a obračunska jedinica za prijenos podataka je 100 kB.  " +
                        "Paket će ti se aktivirati u najkraćem mogućem roku, a najkasnije u roku od 24 sata. O aktivaciji paketa " +
                        "primit ćeš SMS obavijest, zato pričekaj poruku prije nego što ga počneš koristiti. Možeš kupiti samo jednu " +
                        "veličinu paketa razgovora, SMS-a ili interneta npr. mali paket razgovora, srednji paket SMS-a i veliki paket " +
                        "interneta. No ne moraš kupiti sva tri paketa odjednom – nekad možeš kupiti jedan, dva ili čak nijedan, ovisi " +
                        "koja ti kombinacija u tom trenutku treba. Ne pristaj na kompromise nego si složi onu kombinaciju koja te u tom " +
                        "trenutku pali! Paket koji odabereš vrijedi 30 dana od dana aktivacije i nakon isteka će ti se automatski reaktivirati " +
                        "ako imaš dovoljno novca na računu, ako ti nije istekla valjanost bonbon računa i ako paket nisi u međuvremenu sam " +
                        "deaktivirao. O isteku paketa i mogućnosti da ga deaktiviraš bit ćeš obaviješten SMS porukom prije isteka." +
                        "Nakon isteka 30 dana možeš složiti svoju novu bonbon kombinaciju. Ili zadržati staru, ako ti tako odgovara :-)" +
                        "Ako potrošiš svoj paket unutar 30 dana (o čemu ćemo te obavijestiti SMS-om), sam možeš kupiti novi paket ali jednake v" +
                        "eličine. Ako želiš unutar tih 30 dana aktivirati paket druge veličine, kontaktiraj nas :-) Ako ne želiš kupovati novi " +
                        "paket – ne moraš, tada jednostavno nastavi razgovarati, slati poruke i surfati po standardno dobrim bonbon cijenama iz " +
                        "osnovne tarife. Ako svoj paket ne potrošiš unutar 30 dana, nepotrošene minute, SMS-ove i MB-e više nećeš moći koristiti." +
                        "Ako si aktivirao mali, srednji ili veliki paket razgovora, trebaš imati barem 1 lipu na računu da bi mogao koristiti minute " +
                        "uključene u paket. I na kraju, ovo ćeš se sigurno pitati pa ti odmah dajemo odgovor: ako sudjeluješ u promociji „pričaj for " +
                        "free do 2020.“ i imaš aktiviran neki od paketa razgovora, prvo će ti se trošiti minute iz promocije, a tek nakon toga minute " +
                        "iz paketa. ");
                sb.append("\n");
                alertDialog.setMessage(sb.toString());
                alertDialog.setButton("Povratak", new DialogInterface.OnClickListener() {

                   public void onClick(DialogInterface dialog, int which) {
                   }  
                });

                alertDialog.show();

                                break;
            case R.id.exit: 

                    finish();
                }
        return true;


        }
}

错误报告中的第48,56和64行是ITALIC ....所以我不知道这里有什么问题:(

1 个答案:

答案 0 :(得分:0)

这段代码非常难以阅读......就像编程提示一样,你应该重构它,而不是6个变量的ifs,你有级联条件。

另一个快速提示:只需使用if(box.isChecked == false),而不是if(!box.isChecked)。相同的效果,更易读的代码。

也就是说,您的活动似乎无法找到您提供的复选框的布局资源。

Android会非常积极地回收视图,我猜想当系统不在屏幕上时,系统会回收这些视图,并且当您尝试使用box.isChecked引用它时,会导致空指针异常。

确保您的velikiRazgovorivelikiSMSvelikiInternet框(因为它们是引发错误的行中的三个)都显示在屏幕上。

你可以通过将三个条件中的每一个放在单独的行上来调试它,如下所示:

if (maliRazgovori.isChecked() && 
   !maliSMS.isChecked() && 
   !maliInternet.isChecked() && 
   !srednjiRazgovori.isChecked() && 
   !srednjiSMS.isChecked() && 
   !srednjiInternet.isChecked() && 
   !velikiRazgovori.isChecked() && 
   !velikiSMS.isChecked() && 
   !velikiInternet.isChecked()
{
   String kombinacija = "Odabrana kombinacija sadrži 
        (20 minuta prema svim mrežama) i cijena joj je 10kn.";
   text1.setText(kombinacija);
}

尝试使用上述条件,看看会发生什么。

祝你好运!