Android FATAL EXCEPTION: main?
habe ich diesen 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);
}
}
Den ich aber noch nicht gefunden mein Fehler, da sehe ich dieses Protokoll
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)
hier ist das 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>
`
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dein problem ist dieser:
Sind Sie die Initialisierung der EditTexts vor deren Instanzen Hinzugefügt werden, um die Aktivität von
Also dieses immer werfen
NPE
.Lösung: Verschieben Sie diese Zeilen hinter
setContentView()
- und es funktioniert.Erklärung:
Wann immer Sie möchten, initialisieren Sie Ihre widgets mit
findViewById()
zuerst genannt werden mussweil Hauptzweck
setContentView()
Methode, um alle Instanzen von UI-Elemente im layout definieren Sie und, die wird als Inhalt der Tätigkeit. Also immer, wenn Sie anrufenfindViewById()
vorsetContentView()
es wirft immerNullPointerException
becauses Ansichten sind null.EditText mensaje; EditText subje;
Sie benötigen, initialisieren Sie Sie.Bekommen Sie die Ansicht zuerst müssen Sie das layout festlegen der Aktivität.
Verschieben Sie diese Zeilen in die onCreate-Methode.
wie
EDIT:
Haben Sie nicht einmal initialisieren der
und hier die Festlegung von text.
Wieder hier NPE
So initialisieren Sie diese auch in
onCreate
Methode, wie ich initialisiert oben.itSend.putExtra(android.content.Intent.EXTRA_SUBJECT,subje.getText());
itSend.putExtra(android.content.Intent.EXTRA_TEXT, mensaje.getText());
im subje und mensaje