Android Temperaturconverter, R.id.element wird nicht gefunden

KingOfExceptions

Bekanntes Mitglied
Ich habe mich nun endlich mal an Android herangewagt: leider ohne Erfolg.
Das Installieren von der SDK und den AddOns von Eclipse lief nach dem zweiten Anlauf so einigermaßen gut.
Aber ich komme überhaupt nicht mit Android klar. XML ist für mich was Neues, und mit den ganzen verschiedenen Sachen geht es noch nicht ganz.
Also hab ich mich an diesem Tutorial orientiert: Tutorial.
Ab Punkt 10.2 dürfte es interessant werden.
Ich habe mich brav an alles gehalten, so wie es im Tut auch steht, doch auch nach dem 3x mal neuanfangen, klappt es nicht. Eclipse zeigt mir an, dass in der Activity.java-Datei etwas nicht stimmt.

hier mal meine Dateien:
Java:
package de.vogella.android.temperature;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.Toast;

public class ConvertActivity extends Activity {
  private EditText text;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    text = (EditText) findViewById(R.id.editText1);

  }

  // This method is called at button click because we assigned the name to the
  // "On Click property" of the button
  public void myClickHandler(View view) {
    switch (view.getId()) {
    case R.id.button1:
      RadioButton celsiusButton = (RadioButton) findViewById(R.id.radio0);
      RadioButton fahrenheitButton = (RadioButton) findViewById(R.id.radio1);
      if (text.getText().length() == 0) {
        Toast.makeText(this, "Please enter a valid number",
            Toast.LENGTH_LONG).show();
        return;
      }

      float inputValue = Float.parseFloat(text.getText().toString());
      if (celsiusButton.isChecked()) {
        text.setText(String
            .valueOf(convertFahrenheitToCelsius(inputValue)));
        celsiusButton.setChecked(false);
        fahrenheitButton.setChecked(true);
      } else {
        text.setText(String
            .valueOf(convertCelsiusToFahrenheit(inputValue)));
        fahrenheitButton.setChecked(false);
        celsiusButton.setChecked(true);
      }
      break;
    }
  }

  // Converts to celsius
  private float convertFahrenheitToCelsius(float fahrenheit) {
    return ((fahrenheit - 32) * 5 / 9);
  }

  // Converts to fahrenheit
  private float convertCelsiusToFahrenheit(float celsius) {
    return ((celsius * 9) / 5) + 32;
  }
}

[XML]<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/myColor"
android:eek:rientation="vertical" >

<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="numberDecimal|numberSigned" >
</EditText>

<RadioGroup
android:id="@+id/radioGroup1"
android:layout_width="match_parent"
android:layout_height="wrap_content" >

<RadioButton
android:id="@+id/radio0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="@string/celsius" >
</RadioButton>

<RadioButton
android:id="@+id/radio1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/fahrenheit" >
</RadioButton>
</RadioGroup>

<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:eek:nClick="myClickHandler"
android:text="@string/calc" >
</Button>

</LinearLayout> [/XML]

[XML]
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, Convert!</string>
<string name="app_name">Temperature Converter</string>
<color name="myColor">#3399CC</color>
<string name="myClickHandler">myClickHandler</string>
<string name="celsius">to Celsius</string>
<string name="fahrenheit">to Fahrenheit</string>
<string name="calc">Calculate</string>
</resources>
[/XML]

Ich habe einfach nur alles blind abgeschrieben und so gemacht wie es dort stand, doch habe ich mehr Dateien im Workspace als der Tutorial-Autor. Hier noch ein Bild von meinem Workspace.

Ich verzweifle so langsam, da ich
1. bei Android noch ganz neu bin
2. es mir unglaublich kompliziert im Vergleich zu reinem Java scheint
3. das Tutorial nicht richtig funktioniert

LG
KingOfExceptions
 

Anhänge

  • eclipse.JPG
    eclipse.JPG
    79,4 KB · Aufrufe: 38

KingOfExceptions

Bekanntes Mitglied
ok hab ich jetzt geändert.
aber jetzt kennt er meine ganzen variablen (textfield, button etc) nicht.

Außerdem kommt beim Speichern das hier:

Code:
[2012-07-31 22:52:27 - de.vogella.android.temperature] W/ResourceType( 4896): Bad XML block: header size 62 or total size 6097168 is larger than data size 0
[2012-07-31 22:52:27 - de.vogella.android.temperature] C:\Documents and Settings\patrick2\Mes documents\JavaDeveloppement\EclipseIndigo\Workspace\de.vogella.android.temperature\res\layout\activity_convert.xml:6: error: Error: No resource found that matches the given name (at 'text' with value '@string/hello_world').
[2012-07-31 22:52:27 - de.vogella.android.temperature] C:\Documents and Settings\patrick2\Mes documents\JavaDeveloppement\EclipseIndigo\Workspace\de.vogella.android.temperature\res\menu\activity_convert.xml:2: error: Error: No resource found that matches the given name (at 'title' with value '@string/menu_settings').
[2012-07-31 22:53:22 - de.vogella.android.temperature] W/ResourceType( 4392): Bad XML block: header size 92 or total size 0 is larger than data size 0
[2012-07-31 22:53:22 - de.vogella.android.temperature] C:\Documents and Settings\patrick2\Mes documents\JavaDeveloppement\EclipseIndigo\Workspace\de.vogella.android.temperature\res\menu\activity_convert.xml:2: error: Error: No resource found that matches the given name (at 'title' with value '@string/menu_settings').
[2012-07-31 22:53:51 - de.vogella.android.temperature] W/ResourceType( 4836): Bad XML block: header size 92 or total size 0 is larger than data size 0
[2012-07-31 22:53:51 - de.vogella.android.temperature] C:\Documents and Settings\patrick2\Mes documents\JavaDeveloppement\EclipseIndigo\Workspace\de.vogella.android.temperature\res\menu\activity_convert.xml:2: error: Error: No resource found that matches the given name (at 'title' with value '@string/menu_settings').

Keine Ahnung, was es damit auf sich hat. :/
 

schlingel

Gesperrter Benutzer
1. Dann hast du wahrscheinlich das falsche R importiert. Es gibt eines im Android-Namespace, wo alle Resourcen vom System vermerkt sind, und eines für dein Projekt. Falls der Import doch stimmt heißt das, dass dein Projekt nicht mehr gebaut wurde, hängt möglicherweise mit deinem zweiten Problem zusammen.

2. Das Problem dürfte nicht neu sein. Auf Stackoverflow hat hier jemand genau das gleiche Problem geschildert. Am besten die Vorschläge ausprobieren, Project -> Clean ausführen und wenn das nichts nutzt das XML-File entfernen und noch einmal neu hinzufügen.

Solche Sachen gibt's leider immer mal wieder im Android SDK. Project -> Clean wird noch dein bester Freund werden.
 

KingOfExceptions

Bekanntes Mitglied
Welches R muss man denn importieren? ich habs mal mit dem R von Android versucht, da gab es wenige Fehler (R.id.button1 war jetzt richtig).
Clean hat bei mir nichts genützt, der Fehler kommt immer wieder.
Alles in Allem bin ich von Android ziemlich enttäuscht, mehr WYSIWYG als richtiges Programmieren und voller Bugs.
 

schlingel

Gesperrter Benutzer
Alles in Allem bin ich von Android ziemlich enttäuscht, mehr WYSIWYG als richtiges Programmieren und voller Bugs.
Da verwechselst du jetzt das Android SDK mit dem Eclipse ADT. Zwei völlig verschiedene Sachen, auch wenn zweiteres auf ersterem aufbaut.

Außerdem solltest du dich mal in die Materie einlesen bevor du Vermutung anstellst. Denn R aus dem Android-Package zu inkludieren statt aus dem eigenen ist schon mal ein Anzeichen, dass das verabsäumt wurde.

Die Klasse R wird bei jeder Änderung von Resource-Files vom Android SDK neu erstellt. Das Neuerstellen wird allerdings vom Eclipse ADT angestoßen da dieses die Files überwacht. Alleine durch die Fragmentierung der FileWatcher über die OS-Grenzen hinweg kann es da zu Bröseln kommen.

Project -> Clean macht das manuell und löscht vorher noch alle alten .class-Files die dir hier einen Strich durch die Rechnung machen können.

Wenn es keine Klasse R in deinem Package gibt, hast du Fehler in einem deiner Resource-Files. Android-Namespace nicht hinzugefügt, android:layout_width oder android:layout_height fehlen oder ähnliche Klassiker sind dafür oft verantwortlich.
 
Zuletzt bearbeitet:

schlingel

Gesperrter Benutzer
Irgendwo musst du einen Fehler gemacht haben. Die Tuts von dem sind nämlich spitze.

Aber Schade, dass er anscheinend nichts von den Grundlagen erklärt. Hast du außer das R nicht gefunden wird sonst irgendwelche Fehlermeldungen?
 

KingOfExceptions

Bekanntes Mitglied
Ich weiß aber leider nicht wo.
Soll ich mal ein Screenvideo machen und einfach alles neu anfangen?

Das ist, was in der Konsole nach einer Speicherung der .java Datei steht:

Code:
[2012-08-01 14:34:26 - de.vogella.android.temperature] W/ResourceType( 4576): Bad XML block: header size 92 or total size 0 is larger than data size 0
[2012-08-01 14:34:26 - de.vogella.android.temperature] C:\Documents and Settings\patrick2\Mes documents\JavaDeveloppement\EclipseIndigo\Workspace\de.vogella.android.temperature\res\menu\activity_convert.xml:2: error: Error: No resource found that matches the given name (at 'title' with value '@string/menu_settings').
 

KingOfExceptions

Bekanntes Mitglied
und für was soll menu settings stehen? Im Tutorial steht davon nichts. In meinem ersten Post sind auch alle meine Dateien drin... falls da was nicht stimmen sollte.
 

schlingel

Gesperrter Benutzer
Keine Ahnung, jedenfalls sagt die Fehlermeldung dass es verwendet wird aber nicht existiert. Also kann er nicht builden. Füg es halt ein und schreib "Menu Settings" rein und gut ist.
 

KingOfExceptions

Bekanntes Mitglied
Hab ich gemacht. Jedoch kommt jetzt immernoch von ECLIPSE der fehler, dass er R nicht finden kann. Eclipse will android.r importieren, doch ich denke, das ist nicht richtig oder?
Wenn ich die ConvertActivity datei in zb source verschiebe, dann kommt kein fehler mehr von eclipse, sondern erst, wenn ich das programm ausführen möchte.
 

schlingel

Gesperrter Benutzer
Eclipse will android.r importieren, doch ich denke, das ist nicht richtig oder?
Stimmt.

Wenn ich die ConvertActivity datei in zb source verschiebe, dann kommt kein fehler mehr von eclipse, sondern erst, wenn ich das programm ausführen möchte.
Wie genau sieht die Ordnerstruktur von deinem Projekt aus? Die .java-Files sollten immer irgendwo im src Verzeichnis liegen
 

schlingel

Gesperrter Benutzer
OK, das sieht soweit gut aus. Dann kommentier mal alle Stellen aus die R verwenden in deiner Activity. Wenn keine Fehler mehr vorliegen, sollte das System R generieren können. Dann solltest du im Ordner gen die Klasse R.java finden.

Wenn dem so ist, importierst du diese in deiner Activity und kannst dann den Code verwenden.
 

KingOfExceptions

Bekanntes Mitglied
Er zeigt mir keine Fehler an, aber wenn ich auf RUN klicke, dann sagt er, ich solle die Fehler beheben. Es gibt aber gar keine. Der einzige Ordner bei dem ein kleines Kreuz ist, ist AndroidManifest.xml
 

schlingel

Gesperrter Benutzer
Dann gibt's einen Fehler ;-)

Gelbe Dreiecke mit Rufzeichen bedeuten Warnings, rote Kreuze Errors.

Was sagt denn deine Problems View? (Kann über Window -> Show View -> Problems angezeigt werden)
 

KingOfExceptions

Bekanntes Mitglied
Error: No resource found that matches the given name (at 'label' with value '@string/title_activity_convert'). AndroidManifest.xml /de.vogella.android.temperature line 14 Android AAPT Problem

Also ist was in AndroidManifest.xml falsch... Da habe ich aber nicht rumgespielt.
 

schlingel

Gesperrter Benutzer
Da fehlt im strings.xml der Eintrag für title_activity_convert. Füg im AndroidManifest.xml an der stelle wo @string/title_activity_convert steht einfach einen beliebigen String ein wie z.B. Convert Activity.

Dann sollte er endlich bauen :)
 

KingOfExceptions

Bekanntes Mitglied
So läuft nun alles ohne Fehler - fast perfekt. Ich habe ein VDM installiert, um die Apps auch ausführen zu können. Und nun läuft iwas falsch :(

Hier mal die Konsolenausgabe:


[2012-08-03 17:37:53 - de.vogella.android.temperature] ------------------------------
[2012-08-03 17:37:53 - de.vogella.android.temperature] Android Launch!
[2012-08-03 17:37:53 - de.vogella.android.temperature] adb is running normally.
[2012-08-03 17:37:53 - de.vogella.android.temperature] Performing com.example.de.vogella.android.temperature.ConvertActivity activity launch
[2012-08-03 17:37:53 - de.vogella.android.temperature] Automatic Target Mode: launching new emulator with compatible AVD 'Google'
[2012-08-03 17:37:53 - de.vogella.android.temperature] Launching a new emulator with Virtual Device 'Google'
[2012-08-03 17:38:11 - Emulator] Failed to create Context 0x3005
[2012-08-03 17:38:11 - Emulator] emulator: WARNING: Could not initialize OpenglES emulation, using software renderer.
[2012-08-03 17:38:12 - de.vogella.android.temperature] New emulator found: emulator-5554
[2012-08-03 17:38:12 - de.vogella.android.temperature] Waiting for HOME ('android.process.acore') to be launched...
[2012-08-03 17:38:38 - de.vogella.android.temperature] emulator-5554 disconnected! Cancelling 'com.example.de.vogella.android.temperature.ConvertActivity activity launch'!


Mein Problem ist, dass der Bildschirm einfach nur Android anzeigt und sogar ein HelloWorld nicht anzeigt :/
Was muss ich da ändern?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
ruutaiokwu Android In einem Android-“Spinner”-Element GLEICHZEITIG Bild (links) UND Text (rechts) anzeigen Android & Cross-Platform Mobile Apps 0
antonbracke Android OpenGL - Element zum Zeigen eines .obj Models Android & Cross-Platform Mobile Apps 2
W Reward Ads AdMob wird nicht ausgeliefert. Android & Cross-Platform Mobile Apps 9
J Spinner wird nicht aktualisiert Android & Cross-Platform Mobile Apps 6
Naxon89 Duplicate class kotlin - und dies ohne das es angewendet wird Android & Cross-Platform Mobile Apps 1
ImageView wird nicht angezeigt Android & Cross-Platform Mobile Apps 4
W Bildschirm Nutzung Überwachen der App Nutzer ink. was angeklickt wird Android & Cross-Platform Mobile Apps 35
N XY-Plottet keine Daten obwohl Funktion ausgeführt wird Android & Cross-Platform Mobile Apps 4
K Null-Pointer-Exception in ListView - wird über Datenbank gefüllt Android & Cross-Platform Mobile Apps 1
R Android Do not disturb: Sound wird nicht abgespielt Android & Cross-Platform Mobile Apps 2
O Google Admob Ad wird nicht geladen und App stürzt ab Android & Cross-Platform Mobile Apps 1
M Paper DB wird in Android Studio nicht erkannt Android & Cross-Platform Mobile Apps 7
R Audio wird nur 1 Mal abgespielt Android & Cross-Platform Mobile Apps 2
A GraphView => X- und Y-Achse wird nicht angezeigt Android & Cross-Platform Mobile Apps 5
A jpg wird im Android Studio nicht akzeptiert Android & Cross-Platform Mobile Apps 3
Arif Android Radiobutton wird nicht deaktiviert Android & Cross-Platform Mobile Apps 1
Arif Android Canvas wird nicht gezeichnet? Android & Cross-Platform Mobile Apps 0
J Notification wird nicht angezeigt wenn App nicht offen ist. Android & Cross-Platform Mobile Apps 6
M TypedArray-Resource wird falsch geladen Android & Cross-Platform Mobile Apps 7
W Preview wird nicht korrekt angezeigt Android & Cross-Platform Mobile Apps 0
B Profilpic wird nach anmeldung nicht angezeigt. Android & Cross-Platform Mobile Apps 2
K Methode wird nicht gefunden Android & Cross-Platform Mobile Apps 1
J Kamera - Foto wird nicht gespeichert Android & Cross-Platform Mobile Apps 2
V Android Wird mein Vorhaben funktionieren? (Apk Datei decompilieren, bearbeiten, compilieren) Android & Cross-Platform Mobile Apps 2
G App wird nach Installation auf Smartphone beendet Android & Cross-Platform Mobile Apps 1
L Dialog anzeigen wenn auf Button gedrückt wird. Android & Cross-Platform Mobile Apps 4
S Android neue Version des Programms wird nicht in Emulator geladen Android & Cross-Platform Mobile Apps 1
O Android Switch Widget wird nicht angezeigt Android & Cross-Platform Mobile Apps 1
M Android ListView wird nicht dargestellt Android & Cross-Platform Mobile Apps 2
N PriceScannerApp: warum wird nach dem Scannen Display gleich schwarz? Android & Cross-Platform Mobile Apps 4
P Herausfinden, welches Fragment gerade angezeigt wird. Android & Cross-Platform Mobile Apps 1
M Android Nur erste Zeile wird vom Server empfangen Android & Cross-Platform Mobile Apps 0
A App wird bei start des Timers beendet Android & Cross-Platform Mobile Apps 1
A Wieso wird die App beendet ??? Android & Cross-Platform Mobile Apps 2
B Alle Daten gehen verloren, wenn die Displaysperre aktiviert wird? Android & Cross-Platform Mobile Apps 21
P trotz invalidate() wird onDraw() nicht aufgerufen Android & Cross-Platform Mobile Apps 15
W XML Layout: wann wird geladen? Android & Cross-Platform Mobile Apps 10
A onDraw wird nicht aufgerufen Android & Cross-Platform Mobile Apps 14
A Android Dialog wird nicht sofort angezeigt Android & Cross-Platform Mobile Apps 12
W ImageView wird nicht angezeigt Android & Cross-Platform Mobile Apps 19
T Android: ListView-Adapter: Adapter wird ständig aufgerufen Android & Cross-Platform Mobile Apps 2
F Android Datenbank upgrade wird nicht durchgeführt Android & Cross-Platform Mobile Apps 2
F Android R.raw wird nicht gefunden Android & Cross-Platform Mobile Apps 5
P ID wird nicht erzeugt Android & Cross-Platform Mobile Apps 2
C Problem Device/Emulator wird nicht erkannt Android & Cross-Platform Mobile Apps 3
R Zeichen-Codierung in (SMS) TextMessage, "_" wird § Android & Cross-Platform Mobile Apps 2

Ähnliche Java Themen

Neue Themen


Oben