0 votos

Hola, estoy haciendo una app sencilla con 2 Activitys, en una hace una seleccion con Checkbox y RadioButton y la otra Activity me muestra el resultado con una sencilla operacion matematica.                                                   

Compila bien y hace la primera Activity bien, al llegar a la segunda aparece el mensaje del titulo: "Lo sentimos, la aplicación se detuvo" y se sale.

Esto sale en el logcat:

09-29 17:20:30.322 13766-13766/com.example.hostdata.controlesbutons E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: com.example.hostdata.controlesbutons, PID: 13766 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.hostdata.controlesbutons/com.example.hostdata.controlesbutons.MainActivity2}: java.lang.NullPointerException at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2198) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2257) at android.app.ActivityThread.access$800(ActivityThread.java:139) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1210) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5086) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.NullPointerException at com.example.hostdata.controlesbutons.MainActivity2.onCreate(MainActivity2.java:40)

 

y esto es la MainActivity2: (La linea 40 esta marcada abajo y me sale una advertencia en amarillo con lo sig)

Array access 'ar[0]' may produce java.lang.NullPointerException

 
public class MainActivity2 extends AppCompatActivity {

    TextView txtCurso, txtPre, txtDscto1, txtDscto2, txtTotal;

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

            //enlazando controles

            txtCurso =(TextView)findViewById(R.id.recibeCurso);
            txtPre =(TextView)findViewById(R.id.recibePrecio);
            txtDscto1 =(TextView)findViewById(R.id.recibeDscto1);
            txtDscto2 =(TextView)findViewById(R.id.recibeDscto2);
            txtTotal =(TextView)findViewById(R.id.recibeTotal);

            //declarando arreglos

            String []ar2=new String[5];

           Bundle recupera=getIntent().getExtras();

            if (recupera!=null){
            ar2=recupera.getStringArray("Datos");
            }

            txtCurso.setText(ar2[0]);    ---> esta es la linea 40
            txtPre.setText(ar2[1]);
            txtDscto1.setText(ar2[2]);
            txtDscto2.setText(ar2[3]);
            txtTotal.setText(ar2[4]);

 

Muchas gracias de antemano por la ayuda, soy nuevo en este tema, el AndroidManifest.xml tiene creada las 2 activitys.

por en Android

1 Respuesta

+1 voto

Para el error:

java.lang.RuntimeException: Unable to start activity 

Suele indicar la mayoría de las veces que no está definida la Activity en el AndroidManifest.xml o que está mal definida.

 

Para la advertencia:

Simplemente te dice el IDE que como la variable "recupera" sea null en algún momento durante la ejecución, el programa va a dar error en la línea 40; ya que si es null no añades datos al array "ar2"

por
Gracias por responder la duda, excelente libro!!