so hier bin ich mal wieder! was mach ich jetzt falsch?

  • Antworten:20
Gelöschter Account
  • Forum-Beiträge: 573

22.03.2010, 10:45:57 via Website

Bei meiner App will ich zwei Layouts "verknüpfen"
bei main.xml drück ich dann einen Button der mich zu dem 2ten layout führen soll aber der Emulator sagt: The application xxxx (process xxx.xxxx.xxxx) has stopped unexpectedly. Please try again!
ich glaube ich habe beim android Manifest sch**** gebaut:
1activity android:name=".appbox"
2 android:label="@string/app_name">
3 <intent-filter>
4 <action android:name="android.intent.action.MAIN" />
5 <category android:name="android.intent.category.LAUNCHER" />
6 </intent-filter>
7 </activity>
8 <activity android:name=".dollareurocon"
9 android:label="@string/converter">
10 <intent-filter>
11 <action android:name="android.intent.action.MAIN" />
12 <category android:name="android.intent.category.LAUNCHER" />
13 </intent-filter>
14 </activity>
15<activity android:name=".dollareurocon"
16 android:label="@string/converter">
17 <intent-filter>
18 <action android:name="android.intent.action.MAIN" />
19 <category android:name="android.intent.category.LAUNCHER" />
20 </intent-filter>
21 </activity>
22 </application>
23 <uses-sdk android:minSdkVersion="4" />
24
25</manifest>

Von der Zeile 14 bis 20 was muss ich da machen???

— geändert am 22.03.2010, 10:46:47

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

22.03.2010, 11:10:20 via Website

schau dir mal an was die fehlermeldung ist

eclipse -> debug

dort steht dann, warum es eine exception gab.

swordiApps Blog - Website

Antworten
Gelöschter Account
  • Forum-Beiträge: 573

22.03.2010, 15:21:27 via Website

Bitte schau dir Zeile 15 bis 21 an ich glaube da liegt der Fehler...
aber ich bin blutiger Anfänger...
Ich probier das gleich mit der Debug Konsole

EDIT Zeile 18 und 19 hab ich einfach von Zeile 11 und 12 kopiert!

— geändert am 22.03.2010, 15:27:38

Antworten
goto android
  • Forum-Beiträge: 138

22.03.2010, 15:53:01 via Website

Du hast zwei Activitys mit dem gleichen Namen.

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

22.03.2010, 16:01:35 via Website

Es kann nur einen geben .... :grin::grin::grin:

lg Voss

Antworten
Gelöschter Account
  • Forum-Beiträge: 573

22.03.2010, 16:01:48 via Website

Was soll da sonst stehen???
in zeile 18 ... stimmt da das main nicht soll ich da den namen des anderen Layouts einfügen?

— geändert am 22.03.2010, 16:15:18

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

22.03.2010, 16:16:51 via Website

Deine Klasse "dollareurocon" welche Activity extended ist die Main Action. In sofern musst Du wohl auch für die zweite Activity eine Main Action haben, also eine zweite Klasse.

Diese zweite Klasse kann dann durchaus auch eine Main Action besitzen.

lg Voss

Antworten
Gelöschter Account
  • Forum-Beiträge: 573

22.03.2010, 16:17:55 via Website

Okay ich hab jetzt einfach 18 und 19 weg...
und an dieser stelle fehlt was...
1<?xml version="1.0" encoding="utf-8"?>
2<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3 package="org.app.box"
4 android:versionCode="1"
5 android:versionName="1.0">
6 <application android:icon="@drawable/icon"
7 android:label="@string/app_name"
8 android:debuggable="true">
9 <activity android:name=".appbox"
10 android:label="@string/app_name">
11 <intent-filter>
12 <action android:name="android.intent.action.MAIN" />
13 <category android:name="android.intent.category.LAUNCHER" />
14 </intent-filter>
15 </activity>
16 <activity android:name=".dollareurocon"
17 android:label="@string/converter">
18 </activity>
19 </application>
20 <uses-sdk android:minSdkVersion="4" />
21
22</manifest>

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

22.03.2010, 16:20:32 via Website

Genau das:
1<intent-filter>
2<action android:name="android.intent.action.MAIN" />
3<category android:name="android.intent.category.LAUNCHER" />
4</intent-filter>

lg Voss

Antworten
Gelöschter Account
  • Forum-Beiträge: 573

22.03.2010, 16:30:02 via Website

Error:The application xxxx (process xxx.xxxx.xxxx) has stopped unexpectedly. Please try again!
wenn ich wieder auf den Button in main.xml drücke um dollartoeuroconv.xml zu öffnen...

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

22.03.2010, 16:37:46 via Website

Und was steht im Logfile? Was Du uns hier zeigst ist ja eine GUI Fehlermeldung.

lg Voss

Antworten
Gelöschter Account
  • Forum-Beiträge: 573

22.03.2010, 16:45:54 via Website

Malformed javadoc, rejected by FormText for node activity: 'The <code>activity</code> tag declares an {@link android.app.Activity} class that is available as part of the package's application

Malformed javadoc, rejected by FormText for node activity: 'The <code>activity</code> tag declares an {@link android.app.Activity} class that is available as part of the package's application components, implementing a part of the application's user interface.'

Problems occurred when invoking code from plug-in: "org.eclipse.core.resources".

Error validating C:\Dokumente und Einstellungen\user.NAME-188241E365\.android\devices.xml

Error validating C:\Dokumente und Einstellungen\user.NAME-188241E365\.android\devices.xml


falls du das meinst...
Sicher dass das "MAIN" stimmt?

Antworten
Gelöschter Account
  • Forum-Beiträge: 573

22.03.2010, 17:18:06 via Website

könnte aber auch damit zusammenhängen!
java.lang.ClassCastException: android.widget.RadioButton cannot be cast to android.view.ViewGroup

was habe ich da falsch gemacht

alles was ich schreibe... alles voller fehler...^^

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

22.03.2010, 17:30:42 via Website

Also malformed javadoc hat sicherlich NICHTS mit dem zu tun was passiert wenn Du den Fehler in der App geworfen bekommst.

Du müsstest mal die App auf dem Phone (oder am Emulator) laufen lassen und genau das aus dem Logfile herausholen was genau zum Zeitpunkt des Fehlers ins Log geschrieben wird. Das kannst Du ja parallel am Schirm nebeneinanderlegen und siehst dann sofort wo was passiert. (Alternativ kannst Du natürlich auch logoutput in Deinen Methoden einbauen. Dann weisst Du es meist ganz genau wo Du Dich befindest. In der Regel wird bei einer Exception die einen solchen Error verursacht allerdings meist die genaue Codezeile in welcher der Fehler auftritt mit ausgegeben.

Die Zeile : "
java.lang.ClassCastException: android.widget.RadioButton cannot be cast to android.view.ViewGroup
" sagt Dir doch schon ganz genau was passiert ist.

Du hast versucht einen RadioButton auf eine ViewGroup zu casten ... Und das wird nicht funktionieren. Ganz genau besagt die Fehlermeldung:
Die ClassCastException wird ausgelöst, wenn auf ein Objekt ein Cast-Konstrukt angewendet wird, dessen Typ inkompatibel zu dem Objekt ist

Btw. Dir ist schon klar was "casten" bedeutet ?

— geändert am 22.03.2010, 17:31:24

lg Voss

Antworten
Gelöschter Account
  • Forum-Beiträge: 573

22.03.2010, 18:12:52 via Website

Nein ich weiß es nicht:*)

Wie kann ich den den fehler berichtigen?

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

22.03.2010, 18:26:10 via Website

Casting nennt man die Überführung eines Datentypen in einen Anderen.
int ii = 42;
byte bb = 100;
// implizites Casting ("automatisches Casting") weil int mächtiger als byte ist
ii = bb;
// explizites Casting ("direktes Casting") weil byte weniger mächtig als int ist
bb = (byte) ii;
Quelle: Wikipedia

Das ganze geht natürlich auch mit Objekten:
Auch Objekte können gecastet werden. Hierbei ist allerdings etwas mehr Vorsicht geboten, als bei den Datentypen. Jedes Objekt hat spezielle Eigenschaften und Methoden. Beim Casten können Eigenschaften verloren gehen oder dem neuen Objekt können notwendige Eigenschaften ganz fehlen, da sie noch nicht definiert wurden. Dies führt zu Laufzeitfehlern.

Das Casten von Objekten wird genutzt, um ein Objekt "weiterzuentwickeln", d.h. in ein Objekt zu konvertieren, das in der Vererbungshirarchie weiter unten liegt. Das ganze anders herum zu versuchen führt zu einem Laufzeitfehler, also erst während der Programmausführung.

java.lang.Object ||
| ||
+--java.awt.Component ||
| ||
+--java.awt.Container ||
| ||
+--java.awt.Window ||
| \--/
+--java.awt.Frame \/
Im obigen Baum wäre es z.B. um ein Container-Objekt in ein Frame-Objekt zu casten.
Container c = new Container();
Frame f = (Frame) c;

Quelle: Uni Duesseldorf

Wie Du nun Dein spezielles Casting Problem beseitigst ... hängt davon ab was genau Du erreichen willst bei/mit der Typumwandlung bzw. Überführung.
Das musst Du anhand Deines speziellen Codes entscheiden, bzw. lösen.

lg Voss

Antworten
Gelöschter Account
  • Forum-Beiträge: 573

22.03.2010, 18:47:36 via Website

1dtoe = (RadioButton)this.findViewById(R.id.dollartoeuro);
2 dtoe.setChecked(true);
3 etod = (RadioButton)this.findViewById(R.id.eurotodollar);
4
5 convert = (Button)this.findViewById(R.id.convert);
6 convert.setOnClickListener(this);
7 }
8
9 public void onClick(View v) {
10 if (dtoe.isChecked()) {
11 convertDollarsToEuros();
12 }
13 if (etod.isChecked()) {
14 convertEurosToDollars();
das sind meine RadioButtons...
achja und in der xml datei im layout wird nichts mehr angezeigt da steht im grauen Bildschim der error: ClassCastException: android.widget.RadioButton cannot be cast to android.view.ViewGroup

— geändert am 22.03.2010, 18:50:51

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

22.03.2010, 21:07:23 via Website

Simpelst betrachtet würde ich es so machen:

1package com.voss.buttonusage;
2
3import android.app.Activity;
4import android.os.Bundle;
5import android.util.Log;
6import android.view.View;
7import android.widget.Button;
8import android.widget.RadioButton;
9
10public class buttonusage extends Activity {
11 /** Called when the activity is first created. */
12 private Button convert;
13 private RadioButton dtoe,etod;
14
15
16 @Override
17 public void onCreate(Bundle savedInstanceState) {
18 super.onCreate(savedInstanceState);
19 setContentView(R.layout.main);
20
21 dtoe = (RadioButton)this.findViewById(R.id.dollartoeuro);
22 dtoe.setChecked(true);
23 etod = (RadioButton)this.findViewById(R.id.eurotodollar);
24
25 convert = (Button)this.findViewById(R.id.convert);
26 convert.setOnClickListener(new View.OnClickListener(){
27
28
29 public void onClick(View v) {
30 /*hier was tun ..*/
31 String logme = Double.toString((convert_it(12.32)));
32 Log.d("buttonusage_onClick:",logme);
33 }
34 });
35 }
36 public double convert_it(double money) {
37 /* Hier solltest Du in Abhaengigkeit von dtoe konvertieren */
38 if (dtoe.isChecked()) {
39 /*umrechung in Euro*/
40 }
41 else {
42 /*umrechnung in Dollar*/
43 }
44 /* Und schliesslich den berechneten Wert retournieren*/
45 return money;
46 }
47
48 @Override
49 public void onPause(){
50 super.onPause();
51 }
52
53 @Override
54 public void onStop(){
55 super.onStop();
56 }
57
58 @Override
59 public void onResume() {
60 super.onResume();
61 }
62 @Override
63 public void onDestroy() {
64 super.onDestroy();
65 }
66}

Mit etwa diesem Main.xml
1<?xml version="1.0" encoding="utf-8"?>
2<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:orientation="vertical"
4 android:layout_width="fill_parent"
5 android:layout_height="fill_parent"
6 >
7<TextView
8 android:layout_width="fill_parent"
9 android:layout_height="wrap_content"
10 android:text="@string/hello"
11 />
12<RadioButton android:text="@+id/dollartoeuro" android:id="@+id/dollartoeuro" android:layout_width="wrap_content" android:layout_height="wrap_content"></RadioButton>
13<RadioButton android:text="@+id/eurotodollar" android:id="@+id/eurotodollar" android:layout_width="wrap_content" android:layout_height="wrap_content"></RadioButton>
14
15<Button android:text="Konvertieren" android:id="@+id/convert" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
16</LinearLayout>
Und folgender Manifest.xml
1<?xml version="1.0" encoding="utf-8"?>
2<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3 package="com.voss.buttonusage"
4 android:versionCode="1"
5 android:versionName="1.0">
6 <application android:icon="@drawable/icon" android:label="@string/app_name">
7 <activity android:name=".buttonusage"
8 android:label="@string/app_name">
9 <intent-filter>
10 <action android:name="android.intent.action.MAIN" />
11 <category android:name="android.intent.category.LAUNCHER" />
12 </intent-filter>
13 </activity>
14
15 </application>
16 <uses-sdk android:minSdkVersion="4" />
17
18</manifest>

— geändert am 22.03.2010, 21:08:54

lg Voss

Antworten
Gelöschter Account
  • Forum-Beiträge: 573

22.03.2010, 21:18:40 via Website

Das war konkret nicht mein problem... Das ging schon so!
Was wiederum nicht ging war vom Main.xml zum Converter.xml zu kommen!!!!
Aber. Ich glaube es hat etwas mit dem oben schon gezeigtem Error: ClassCastException: android.widget.RadioButton cannot be cast to android.view.ViewGroup

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

22.03.2010, 21:40:35 via Website

Also ich versteh definitiv nicht was Du willst, noch wo Dein Problem ist.

lg Voss

Antworten
Gelöschter Account
  • Forum-Beiträge: 573

22.03.2010, 21:55:24 via Website

Erst einmal viele Dank für deine Mühe!
ich hab mein konkretes problem entdeckt, davor war es ja unklar...
mein Problem ist der Error: ClassCastException: android.widget.RadioButton cannot be cast to android.view.ViewGroup
Ich will wenn ich im main.xml bin was auch im emulator noch angezeigt wird zum Converter gelangen durch einen Button!
doch wenn ich diesen drücken kommt dieses Fenster mit dem Error:The application xxxx (process xxx.xxxx.xxxx) has stopped unexpectedly. Please try again!

im layout kann der Konverter nicht angezeigt werden denn dann erscheint der obige Error:ClassCastException: android.widget.RadioButton cannot be cast to android.view.ViewGroup

Antworten