Error Fatal Exception: main

  • Antworten:12
Nils Budde
  • Forum-Beiträge: 7

28.03.2014, 11:12:16 via Website

Hallo,
ich versuche zur Zeit eine App zu entwickeln die in eine Datenbank neue Daten eintragen kann.
Ich habe dafür ein Bsp. benutzt und an meine Situation anpasst.
Allerdings stürzt beim öffnen der Entsprechenden Activity immer die App ab und bei LogCat steht
103-28 11:06:07.926: E/AndroidRuntime(7828): FATAL EXCEPTION: main
203-28 11:06:07.926: E/AndroidRuntime(7828): java.lang.RuntimeException: Unable to start activity ComponentInfo{de.sturmfrai.gefahrenbeurteilung/de.sturmfrai.gefahrenbeurteilung.NeuerPrueferActivity}: java.lang.ClassCastException: android.widget.ImageButton cannot be cast to android.widget.Button
303-28 11:06:07.926: E/AndroidRuntime(7828): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1968)
403-28 11:06:07.926: E/AndroidRuntime(7828): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1993)
503-28 11:06:07.926: E/AndroidRuntime(7828): at android.app.ActivityThread.access$600(ActivityThread.java:127)
603-28 11:06:07.926: E/AndroidRuntime(7828): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1159)
703-28 11:06:07.926: E/AndroidRuntime(7828): at android.os.Handler.dispatchMessage(Handler.java:99)
803-28 11:06:07.926: E/AndroidRuntime(7828): at android.os.Looper.loop(Looper.java:137)
903-28 11:06:07.926: E/AndroidRuntime(7828): at android.app.ActivityThread.main(ActivityThread.java:4507)
1003-28 11:06:07.926: E/AndroidRuntime(7828): at java.lang.reflect.Method.invokeNative(Native Method)
1103-28 11:06:07.926: E/AndroidRuntime(7828): at java.lang.reflect.Method.invoke(Method.java:511)
1203-28 11:06:07.926: E/AndroidRuntime(7828): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:978)
1303-28 11:06:07.926: E/AndroidRuntime(7828): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:745)
1403-28 11:06:07.926: E/AndroidRuntime(7828): at dalvik.system.NativeStart.main(Native Method)
1503-28 11:06:07.926: E/AndroidRuntime(7828): Caused by: java.lang.ClassCastException: android.widget.ImageButton cannot be cast to android.widget.Button
1603-28 11:06:07.926: E/AndroidRuntime(7828): at de.sturmfrai.gefahrenbeurteilung.NeuerPrueferActivity.onCreate(NeuerPrueferActivity.java:53)
1703-28 11:06:07.926: E/AndroidRuntime(7828): at android.app.Activity.performCreate(Activity.java:4469)
1803-28 11:06:07.926: E/AndroidRuntime(7828): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1052)
1903-28 11:06:07.926: E/AndroidRuntime(7828): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1932)
2003-28 11:06:07.926: E/AndroidRuntime(7828): ... 11 more
Die entsprechende Datei von mir sieht so aus:
1package de.sturmfrai.gefahrenbeurteilung;
2
3import android.app.Activity;
4import android.content.Intent;
5import android.os.Bundle;
6import android.view.View;
7import java.util.ArrayList;
8import java.util.List;
9
10import org.apache.http.NameValuePair;
11import org.apache.http.message.BasicNameValuePair;
12import org.json.JSONException;
13import org.json.JSONObject;
14
15import android.app.Activity;
16import android.app.ProgressDialog;
17import android.content.Intent;
18import android.os.AsyncTask;
19import android.os.Bundle;
20import android.util.Log;
21import android.view.View;
22import android.widget.Button;
23import android.widget.EditText;
24
25public class NeuerPrueferActivity extends Activity {
26
27 // Progress Dialog
28 private ProgressDialog pDialog;
29
30 JSONParser jsonParser = new JSONParser();
31 EditText txt_name;
32 EditText txt_vorname;
33 EditText txt_firma;
34 EditText txt_pruefernummer;
35
36 // url to create new product
37 private static String url_create_product = "Severadresse und so richtig eingebebn aber Forum lässt mich das nicht so posten";
38
39 // JSON Node names
40 private static final String TAG_SUCCESS = "success";
41
42 @Override
43 public void onCreate(Bundle savedInstanceState) {
44 super.onCreate(savedInstanceState);
45 setContentView(R.layout.activity_neuer_pruefer);
46
47 // Edit Text
48 txt_name = (EditText) findViewById(R.id.txt_name);
49 txt_vorname = (EditText) findViewById(R.id.txt_vorname);
50 txt_firma = (EditText) findViewById(R.id.txt_firma);
51 txt_pruefernummer = (EditText) findViewById(R.id.txt_pruefernummer);
52 // Create button
53 Button btnwahl = (Button) findViewById(R.id.btn_weiter_wahl);
54
55 // button click event
56 btnwahl.setOnClickListener(new View.OnClickListener() {
57
58 @Override
59 public void onClick(View view) {
60 // creating new product in background thread
61 new Hintergrund().execute();
62 }
63 });
64 }
65
66 /**
67 * Background Async Task to Create new product
68 * */
69 class Hintergrund extends AsyncTask<String, String, String> {
70
71 /**
72 * Before starting background thread Show Progress Dialog
73 * */
74 @Override
75 protected void onPreExecute() {
76 super.onPreExecute();
77 pDialog = new ProgressDialog(NeuerPrueferActivity.this);
78 pDialog.setMessage("Prüfer wird eingetragen");
79 pDialog.setIndeterminate(false);
80 pDialog.setCancelable(true);
81 pDialog.show();
82 }
83
84 /**
85 * Creating product
86 * */
87 protected String doInBackground(String... args) {
88 String name = txt_name.getText().toString();
89 String vorname = txt_vorname.getText().toString();
90 String firma = txt_firma.getText().toString();
91 String pruefernummer = txt_pruefernummer.getText().toString();
92
93 // Building Parameters
94 List<NameValuePair> params = new ArrayList<NameValuePair>();
95 params.add(new BasicNameValuePair("name", name));
96 params.add(new BasicNameValuePair("vorname", vorname));
97 params.add(new BasicNameValuePair("firma", firma));
98 params.add(new BasicNameValuePair("pruefernummer", pruefernummer));
99
100 // getting JSON Object
101 // Note that create product url accepts POST method
102 JSONObject json = jsonParser.makeHttpRequest(url_create_product,
103 "POST", params);
104
105 // check log cat fro response
106 Log.d("Create Response", json.toString());
107
108 // check for success tag
109 try {
110 int success = json.getInt(TAG_SUCCESS);
111
112 if (success == 1) {
113 // successfully created product
114 Intent i = new Intent(getApplicationContext(), AuswahlEinzelSystemActivity.class);
115 startActivity(i);
116
117 // closing this screen
118 finish();
119 } else {
120 // failed to create product
121 }
122 } catch (JSONException e) {
123 e.printStackTrace();
124 }
125
126 return null;
127 }
128
129 /**
130 * After completing background task Dismiss the progress dialog
131 * **/
132 protected void onPostExecute(String file_url) {
133 // dismiss the dialog once done
134 pDialog.dismiss();
135 }
136
137 }
138
139
140}

Kann mir jemand da weier helfen?

Antworten
www.zeeked.net
  • Forum-Beiträge: 13

28.03.2014, 11:15:49 via Website

hast du deine Activity im Manifest eingetragen?

Antworten
Nils Budde
  • Forum-Beiträge: 7

28.03.2014, 11:19:24 via Website

Ja ist sie auch die Internet Permission ist eingetragen.
Die App lief vorher nur seit dem Zugriff auf die Datenbank geht es nicht mehr :wacko:

Könnte es ein Problem sein weil der Button ein ImageButton ist?

— geändert am 28.03.2014, 11:20:03

Antworten
SvenDD
  • Forum-Beiträge: 272

28.03.2014, 11:19:45 via Website

Du hast eine ClassCastExcp., schau mal nach, ob alle Buttons richtig definiert und auch implementiert werden:

java.lang.ClassCastException: android.widget.ImageButton cannot be cast to android.widget.Button

Antworten
Luigi
  • Forum-Beiträge: 2.282

28.03.2014, 11:19:56 via Website

Steht doch eigentlich alles in der Fehlermeldung oder nicht?

btn_weiter_wahl scheint ein ImageButton zu sein, den Du in ein Button zu casten versuchst.

Antworten
Nils Budde
  • Forum-Beiträge: 7

28.03.2014, 11:21:50 via Website

Ok wo muss ich dann den ImageButton in meiner Datei eintragen?
Sorry bin recht neu mit Android Programmierung

Antworten
SvenDD
  • Forum-Beiträge: 272

28.03.2014, 11:26:14 via Website

ImageButton btnwahl = ( ImageButton) findViewById(R.id.btn_weiter_wahl);

Antworten
Nils Budde
  • Forum-Beiträge: 7

28.03.2014, 11:36:37 via Website

Danke Sven,
die Activity lässt sich nun starten aber beim übertragen der Daten kommt wieder ein Absturz...
Hier der Error Log
103-28 11:31:49.336: E/AndroidRuntime(9863): FATAL EXCEPTION: AsyncTask #1
203-28 11:31:49.336: E/AndroidRuntime(9863): java.lang.RuntimeException: An error occured while executing doInBackground()
303-28 11:31:49.336: E/AndroidRuntime(9863): at android.os.AsyncTask$3.done(AsyncTask.java:278)
403-28 11:31:49.336: E/AndroidRuntime(9863): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
503-28 11:31:49.336: E/AndroidRuntime(9863): at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
603-28 11:31:49.336: E/AndroidRuntime(9863): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
703-28 11:31:49.336: E/AndroidRuntime(9863): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
803-28 11:31:49.336: E/AndroidRuntime(9863): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
903-28 11:31:49.336: E/AndroidRuntime(9863): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
1003-28 11:31:49.336: E/AndroidRuntime(9863): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
1103-28 11:31:49.336: E/AndroidRuntime(9863): at java.lang.Thread.run(Thread.java:856)
1203-28 11:31:49.336: E/AndroidRuntime(9863): Caused by: java.lang.IllegalArgumentException: Host name may not be null
1303-28 11:31:49.336: E/AndroidRuntime(9863): at org.apache.http.HttpHost.<init>(HttpHost.java:83)
1403-28 11:31:49.336: E/AndroidRuntime(9863): at org.apache.http.impl.client.AbstractHttpClient.determineTarget(AbstractHttpClient.java:497)
1503-28 11:31:49.336: E/AndroidRuntime(9863): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
1603-28 11:31:49.336: E/AndroidRuntime(9863): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
1703-28 11:31:49.336: E/AndroidRuntime(9863): at de.sturmfrai.gefahrenbeurteilung.JSONParser.makeHttpRequest(JSONParser.java:51)
1803-28 11:31:49.336: E/AndroidRuntime(9863): at de.sturmfrai.gefahrenbeurteilung.NeuerPrueferActivity$Hintergrund.doInBackground(NeuerPrueferActivity.java:106)
1903-28 11:31:49.336: E/AndroidRuntime(9863): at de.sturmfrai.gefahrenbeurteilung.NeuerPrueferActivity$Hintergrund.doInBackground(NeuerPrueferActivity.java:1)
2003-28 11:31:49.336: E/AndroidRuntime(9863): at android.os.AsyncTask$2.call(AsyncTask.java:264)
2103-28 11:31:49.336: E/AndroidRuntime(9863): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
2203-28 11:31:49.336: E/AndroidRuntime(9863): ... 5 more
2303-28 11:31:56.766: D/OpenGLRenderer(9863): Flushing caches (mode 0)
2403-28 11:31:56.766: D/OpenGLRenderer(9863): Flushing caches (mode 0)
2503-28 11:31:57.066: E/WindowManager(9863): Activity de.sturmfrai.gefahrenbeurteilung.NeuerPrueferActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@42961c68 that was originally added here
2603-28 11:31:57.066: E/WindowManager(9863): android.view.WindowLeaked: Activity de.sturmfrai.gefahrenbeurteilung.NeuerPrueferActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@42961c68 that was originally added here
2703-28 11:31:57.066: E/WindowManager(9863): at android.view.ViewRootImpl.<init>(ViewRootImpl.java:441)
2803-28 11:31:57.066: E/WindowManager(9863): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:279)
2903-28 11:31:57.066: E/WindowManager(9863): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:215)
3003-28 11:31:57.066: E/WindowManager(9863): at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:140)
3103-28 11:31:57.066: E/WindowManager(9863): at android.view.Window$LocalWindowManager.addView(Window.java:539)
3203-28 11:31:57.066: E/WindowManager(9863): at android.app.Dialog.show(Dialog.java:278)

Antworten
SvenDD
  • Forum-Beiträge: 272

28.03.2014, 11:47:27 via Website

03-28 11:31:49.336: E/AndroidRuntime(9863): Caused by: java.lang.IllegalArgumentException: Host name may not be null

Antworten
Nils Budde
  • Forum-Beiträge: 7

28.03.2014, 11:51:56 via Website

SvenDD
03-28 11:31:49.336: E/AndroidRuntime(9863): Caused by: java.lang.IllegalArgumentException: Host name may not be null

Und was heißt das?

Antworten
Nils Budde
  • Forum-Beiträge: 7

28.03.2014, 12:06:46 via Website

Ok hab den Fehler gefunden hinter der letzten stelle der Domin war noch ein punkt...

Nun blitz aber leider nur kurz der Ladescreen auf und es wird nix in die Datenbank eingetragen

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

28.03.2014, 13:17:39 via App

Benutze mal den debugger und prüfe ob diese Stelle überhaupt ausgeführt wird.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
impjor
  • Forum-Beiträge: 1.793

28.03.2014, 14:27:27 via Website

So etwas
Nils Budde

1if (success == 1) {
2 [...]
3 } else {
4 // failed to create product
5 }

schreit gerade dazu, dass genau dort ein Fehler auftritt, der else-Zweig durchläuft und .... nichts passiert. Nichtmal eine Log-Ausgabe...

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten