Reputation: 73
i have this code
package com.UPFIM.casa;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.Spinner;
public class Constancias extends Activity {
public String nivels;
public String tipos;
public String cant;
public String fot;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.constancias);
EditText nombre = (EditText) findViewById(R.id.name);
EditText matricula = (EditText) findViewById(R.id.edusuario);
EditText mensaje;
EditText subje;
final String nivel[]=new String[]{"Nivel","Preparatoria","Profesional"};
final String tipoc[]=new String[]{"Tipo de Constancia",
"Inscripción en el Periodo en Curso",
"Inscripción en el Periodo Inmediato Anterior",
"Inscripción con Periodo Vacacional",
"Servicio Militar Nacional",
"Inscripción con Promedio Acumulado",
"Inscripción con Promedio del Periodo Inmediato Anterior",
"Inscripción en el Periodo en Curso con Materias Inscritas",
"Inscripción en el Periodo Inmediato Anterior con Materias",
"Inscripción con Promedio del Periodo Inmediato Anterior y Promedio Acumulado",
"Inscripción en el Periodo en Curso con Materias Inscritas y Calificaciones",
"Inscripción en el Periodo Inmediato Anterior con Materias que se Cursaron y Calificaciones",
"Inscripción en el Periodo de Verano",
"Documentación en Trámite de Legalización",
"Documentación en trámite de Apostille",
"Terminación de Estudios",
"Terminación de Estudios con Promedio",
"Carta de Buena Conducta",
"Nivel de Ingles",
"Beca"};
final String[] cantidad = new String[]{"1->$20.00","2->$40.00","3->$60.00","4->$80.00","5->$100.00"};
final String[] foto = new String[]{"Si","No"};
final Spinner spinner1 = (Spinner)findViewById(R.id.spinner1);
final Spinner spinner2 = (Spinner)findViewById(R.id.spinner2);
final Spinner spinner3 = (Spinner)findViewById(R.id.spinner3);
final Spinner spinner4 = (Spinner)findViewById(R.id.spinner4);
ArrayAdapter<String> adapter =
new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, nivel);
spinner1.setAdapter(adapter);
adapter.setDropDownViewResource(
android.R.layout.simple_spinner_dropdown_item);
spinner1.setAdapter(adapter);
spinner1.setOnItemSelectedListener(
new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent,
android.view.View v, int position, long id) {
nivels = new String("\nNivel: " + nivel[position]);
}
public void onNothingSelected(AdapterView<?> parent) {
nivels = new String("");
}
});
ArrayAdapter<String> adapter1 =
new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, tipoc);
spinner2.setAdapter(adapter1);
adapter1.setDropDownViewResource(
android.R.layout.simple_spinner_dropdown_item);
spinner2.setAdapter(adapter1);
spinner2.setOnItemSelectedListener(
new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent,
android.view.View v, int position1, long id) {
tipos = new String("\nTipo: " + tipoc[position1]);
}
public void onNothingSelected(AdapterView<?> parent) {
tipos = new String("");
}
});
ArrayAdapter<String> adapter2 =
new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, cantidad);
spinner3.setAdapter(adapter2);
adapter2.setDropDownViewResource(
android.R.layout.simple_spinner_dropdown_item);
spinner3.setAdapter(adapter2);
spinner3.setOnItemSelectedListener(
new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent,
android.view.View v, int position2, long id) {
cant = new String("\nCantidad: " + cantidad[position2]);
}
public void onNothingSelected(AdapterView<?> parent) {
cant = new String("");
}
});
ArrayAdapter<String> adapter3 =
new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, foto);
spinner4.setAdapter(adapter3);
adapter3.setDropDownViewResource(
android.R.layout.simple_spinner_dropdown_item);
spinner4.setAdapter(adapter3);
spinner4.setOnItemSelectedListener(
new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent,
android.view.View v, int position3, long id) {
fot = new String("\nFoto: " + foto[position3]);
}
public void onNothingSelected(AdapterView<?> parent) {
fot = new String("");
}
});
mensaje.setText("" + nombre.getText().toString() + "\n" + matricula.getText().toString() + nivels + tipos + cant + fot );
subje.setText("Solicitud de Constancia APP");
}
public void enviarme (View view){
Intent itSend = new Intent( android.content.Intent.ACTION_SEND);
itSend.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{"[email protected]"});
itSend.putExtra(android.content.Intent.EXTRA_SUBJECT,subje.getText());
itSend.putExtra(android.content.Intent.EXTRA_TEXT, mensaje.getText());
startActivity(itSend);
}
}
But i don't found my error because i see this log
03-18 19:26:28.065: E/AndroidRuntime(371): FATAL EXCEPTION: main
03-18 19:26:28.065: E/AndroidRuntime(371): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.UPFIM.casa/com.UPFIM.casa.Constancias}: java.lang.NullPointerException
03-18 19:26:28.065: E/AndroidRuntime(371): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1569)
03-18 19:26:28.065: E/AndroidRuntime(371): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
03-18 19:26:28.065: E/AndroidRuntime(371): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
03-18 19:26:28.065: E/AndroidRuntime(371): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
03-18 19:26:28.065: E/AndroidRuntime(371): at android.os.Handler.dispatchMessage(Handler.java:99)
03-18 19:26:28.065: E/AndroidRuntime(371): at android.os.Looper.loop(Looper.java:123)
03-18 19:26:28.065: E/AndroidRuntime(371): at android.app.ActivityThread.main(ActivityThread.java:3683)
03-18 19:26:28.065: E/AndroidRuntime(371): at java.lang.reflect.Method.invokeNative(Native Method)
03-18 19:26:28.065: E/AndroidRuntime(371): at java.lang.reflect.Method.invoke(Method.java:507)
03-18 19:26:28.065: E/AndroidRuntime(371): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
03-18 19:26:28.065: E/AndroidRuntime(371): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
03-18 19:26:28.065: E/AndroidRuntime(371): at dalvik.system.NativeStart.main(Native Method)
03-18 19:26:28.065: E/AndroidRuntime(371): Caused by: java.lang.NullPointerException
03-18 19:26:28.065: E/AndroidRuntime(371): at android.app.Activity.findViewById(Activity.java:1647)
03-18 19:26:28.065: E/AndroidRuntime(371): at com.UPFIM.casa.Constancias.<init>(Constancias.java:22)
here is the layout:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/fondo">
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:id="@+id/tituloAbout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="top"
android:gravity="center"
android:text="@string/constancias"
android:textSize="15dp" />
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/vacio"
android:paddingLeft="10dip"/>
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content"
android:text="@string/nom" android:paddingLeft="10dip"/>
<EditText
android:id="@+id/name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingLeft="10dip"
android:inputType="textPersonName"/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:paddingLeft="10dip"
android:text="@string/Nivel" />
<Spinner
android:id="@+id/spinner1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:paddingLeft="10dip"
android:text="@string/tipo" />
<Spinner
android:id="@+id/spinner2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:paddingLeft="10dip"
android:text="@string/cant" />
<Spinner
android:id="@+id/spinner3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:paddingLeft="10dip"
android:text="@string/foto" />
<Spinner
android:id="@+id/spinner4"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/btn1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:paddingLeft="10dip"
android:text="@string/Advertencia" />
<Button
android:id="@+id/enviar"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:paddingLeft="10dip"
android:text="@string/send"
android:onClick="enviarme" />
</LinearLayout>
</ScrollView>
`
Upvotes: 0
Views: 64069
Reputation: 1425
You might be working on 2 different project and mistakenly you could have copy google-services.json of one project to another project. It happen to me. Hope it helps
Your debug might have different google-services file where as release might have another.. same for IOS googleinfo.plist
Upvotes: 0
Reputation: 48592
To get the view first you need to set layout of activity.
Move these lines inside the onCreate method.
EditText nombre = (EditText) findViewById(R.id.name);
EditText matricula = (EditText) findViewById(R.id.edusuario);
like
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.constancias);
EditText nombre = (EditText) findViewById(R.id.name);
EditText matricula = (EditText) findViewById(R.id.edusuario);
.....
}
You did not even initialize the
EditText mensaje;
EditText subje;
and here you setting the text.
Again here NPE
mensaje.setText("" + nombre.getText().toString() + "\n" + matricula.getText().toString() + nivels + tipos + cant + fot );
subje.setText("Solicitud de Constancia APP");
So initialize these also in onCreate
method as I initialized above.
Upvotes: 1
Reputation: 33495
Your problem is this:
EditText nombre = (EditText) findViewById(R.id.name);
EditText matricula = (EditText) findViewById(R.id.edusuario);
You are initialising EditTexts before their instances are added to Activity by
setContentView();
So this always will throw NPE
.
Solution: Move these lines behind setContentView()
and it will works.
setContentView(R.layout.constancias);
EditText nombre = (EditText) findViewById(R.id.name);
EditText matricula = (EditText) findViewById(R.id.edusuario);
Whenever you want to initialise your widgets with findViewById()
at first must be called
setContentView(R.layout.layoutId)
because key purpose of setContentView()
method is to create all instances of UI elements contained in layout you define and that will be set as content of Activity. So always if you will call findViewById()
before setContentView()
it always throws NullPointerException
becauses Views are null.
Upvotes: 4