Frage zu HelloWorld-App laut Buch von Uwe Post

  • 25 Antworten
  • Letztes Antwortdatum
M

Mayalein

Neues Mitglied
0
Hallo und Guten Morgen zusammen!

Da ich unheimlich gerne lernen möchte, wie man Apps programmiert, habe ich mir von Uwe Post das Buch "Android-Apps entwickeln" gekauft.
Ich bin absoluter Neuling auf diesem Gebiet und habe noch nie in meinem Leben irgendwas programmiert, fange also bei NULL an.
Deshalb hab ich mir ja das Buch gekauft, dachte, es wäre eine Hilfe. Auch wenn ich jetzt kurz davor bin, das Ding in die Ecke zu pfeffern oder zu verbrennen.

Vielleicht kennt es ja jemand oder kann mir zumindest bei meinem Problem helfen.

Bisher hat auch alles (bzw. die erste App "Hello World") ganz gut geklappt, auch wenn es ganz anders aussah als in dem Buch... aber egal, eine freundliche Frauenstimme hat "Hallo!" gesagt. (Erstes Erfolgserlebnis, super! :thumbsup:)

Jetzt bin ich an dem Punkt angelangt, wo man ein Textfeld einfügt und einen Button, wo man den zu sprechenden Text selber eingeben kann. Sieht soweit auch alles ganz gut aus, aber wenn ich auf den Button klicke, passiert nix (auf dem Smartphone) und beim Emulator steht "Die Anwendung wurde unerwartet beendet!".

Und so sieht's bisher aus (und zwar genauso wie im Buch)

package de.androidnewcomer.saghallo;

import java.util.Locale;

import android.app.Activity;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.speech.tts.TextToSpeech.OnInitListener;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class StartActivity extends Activity implements OnInitListener,
OnClickListener {

private TextToSpeech tts;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_start);
tts = new TextToSpeech(this, this);

}

public void onInit (int arg0) {
tts.setLanguage(Locale.GERMAN);
Button button = (Button) findViewById(R.id.button1);
button.setOnClickListener(this);

}


public void onClick (View view) {
EditText editText = (EditText) findViewById(R.id.editText1);
tts.speak(editText.getText().toString(),
TextToSpeech.QUEUE_FLUSH, null);

}
}

Ich hab echt keine Ahnung, woran es liegen könnte. Kann mir einer helfen? Das wäre echt super!

Danke schonmal und allen einen schönen Tag!

Gruß, Maya
 
Hi, vielleicht könnte es daran liegen das die Medienlautstärke auf lautlos ist und du die Ruftonlautstärke erhöhst^^.

mfg
 
Naja, also auf den Gedanken bin ich auch schon gekommen. Aber daran liegt es nicht. Medienlautstärke ist auf mittel eingestellt. Und bei der ersten Version, wo die App nur "Hallo" sagt, ging es ja auch.
 
Hui,

Habe deinen Code mal fix 1:1 übernommen und es funktioniert auf meinem Smartphone perfekt und im Emulator kommt zwar keine Sprachausgabe (habs ein Android 2.3-Gerät emuliert, keine Ahnung ob im Emulator überhaupt TTS-Stimmen ausgegeben werden), aber ich hab kein ForceClose bekommen!

Deshalb: gibt dir LogCat Fehler aus?

Der ursprüngliche Beitrag von 08:23 Uhr wurde um 08:24 Uhr ergänzt:

@ Kollen: Das erklärt aber nicht, warum die Anwendung unerwartet beendet wurde und kann imho auch als Fehlerquelle dafür ausgeschlossen werden!?
 
Hi, also ich hab ja eben deinen code probiert und er läuft auf mein Smartphone eigentlich einwandfrei. Bekommst du vielleicht irgentwelche Fehlermeldungen?

Der ursprüngliche Beitrag von 08:24 Uhr wurde um 08:28 Uhr ergänzt:

Hi TheNephilim, natürlich erklärt es nicht warum er einen forceclose bekommt, aber da ich dieses Programm eben probiert hab und es bei mir funktioniert könnt ja sein das es irgentwo anders liegen könnte und außerdem bei seinem Smartphone kam ja kein forceclose wie bei mir eben bis ich dann die Medienlautstärke erhöht hab und es dann einwandfrei funktionierte

mfg
 
Hm, da stehen so viele Sachen. Fehler sind rot, ja? Oder wonach muss ich gucken?

Also das hier sind auf jeden Fall die Sachen, die rot angezeigt werden. Ich hab echt keinen Plan, was das alles zu bedeuten hat. :blink:

09-21 08:38:25.813: E/Handler(17441): Failed to handle callback; interface not implemented, callback:android.app.LoadedApk$ServiceDispatcher$RunConnection@40d9f4e8
09-21 08:38:25.813: E/Handler(17441): java.lang.ClassCastException: android.widget.TextView cannot be cast to android.widget.Button
09-21 08:38:25.813: E/Handler(17441): at de.androidnewcomer.saghallo.StartActivity.onInit(StartActivity.java:29)
09-21 08:38:25.813: E/Handler(17441): at android.speech.tts.TextToSpeech.dispatchOnInit(TextToSpeech.java:627)
09-21 08:38:25.813: E/Handler(17441): at android.speech.tts.TextToSpeech.access$1000(TextToSpeech.java:52)
09-21 08:38:25.813: E/Handler(17441): at android.speech.tts.TextToSpeech$Connection.onServiceConnected(TextToSpeech.java:1279)
09-21 08:38:25.813: E/Handler(17441): at android.app.LoadedApk$ServiceDispatcher.doConnected(LoadedApk.java:1125)
09-21 08:38:25.813: E/Handler(17441): at android.app.LoadedApk$ServiceDispatcher$RunConnection.run(LoadedApk.java:1142)
09-21 08:38:25.813: E/Handler(17441): at android.os.Handler.handleCallback(Handler.java:607)
09-21 08:38:25.813: E/Handler(17441): at android.os.Handler.dispatchMessage(Handler.java:92)
09-21 08:38:25.813: E/Handler(17441): at android.os.Looper.loop(Looper.java:154)
09-21 08:38:25.813: E/Handler(17441): at android.app.ActivityThread.main(ActivityThread.java:4974)
09-21 08:38:25.813: E/Handler(17441): at java.lang.reflect.Method.invokeNative(Native Method)
09-21 08:38:25.813: E/Handler(17441): at java.lang.reflect.Method.invoke(Method.java:511)
09-21 08:38:25.813: E/Handler(17441): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
09-21 08:38:25.813: E/Handler(17441): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
09-21 08:38:25.813: E/Handler(17441): at dalvik.system.NativeStart.main(Native Method)
09-21 08:38:56.203: W/TextView(17441): GetLabel fail! Do framework orig behavior

Aber mal nebenbei bemerkt ist es ja schon mal gut zu wissen, dass es scheinbar an meinem Handy liegt...
 
Nein es scheint nicht an deinem Handy, sondern an deiner Layout-Datei zu liegen:

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

Kannst du die uns auch mal zeigen?
 
'Das hier?

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:orientation="vertical" >
</LinearLayout>

<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:gravity="center"
android:text="@string/sag_es" />

<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/button1"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:ems="10" />

<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/editText1"
android:layout_centerHorizontal="true"
android:text="@string/beschriftung"
tools:context=".StartActivity" />

</RelativeLayout>

Ich seh gerade bei "Linear Layout" steht an der Seite so nen Ausrufezeichen "This LinearLayout view is useless (no children, no background, no id, no style)"
und bei "Edit Text" auch "This text field does not specify an inputType or a hint"

Was hat das zu bedeuten?
 
Zuletzt bearbeitet:
Ah okay, hab grad nochmal genauer deine LogCat angeschaut. Liegt wohl weder an deinem Code, noch an deinem Layout, sondern an deinem TTS. Die App verabschiedet sich bei mir auch mit einem ForceClose, wenn ich alle TTS-Dienste deaktiviere.

Ich seh gerade bei "Linear Layout" steht an der Seite so nen Ausrufezeichen "This LinearLayout view is useless (no children, no background, no id, no style)"
und bei "Edit Text" auch "This text field does not specify an inputType or a hint"

Das sind LINT-Warnungen. Es meckert dir (wie die Fehlermeldung auch schon sagt) an, dass dein LinearLayout nutzlos ist, weil es keinen Inhalt, keinen Stil oder sonstiges besitzt. Bei deinem EditText meckert es, weil du das Attribut android:hint nicht gesetzt hast. Das ist aber alles nicht ganz so tragisch und nicht weiter schlimm ;)
 
  • Danke
Reaktionen: Mayalein
Okay, und was macht man da jetzt?
 
da du deinen LinearLayout keine ID vergeben hast wirst du da zur Laufzeit auch nichts hin zufügen, also kannst du es wirklick löschen weil es einfach nichts macht ...zu dem EditText das kannst du erstmal ignorieren, mit inputtype ist bspw. sowas gemeint wie password eingabe sprich das da dann punkte kommen etc. und hint ist das was bsp in formularfeldern ab und zu steht, zb das bei einen feld wo du den benutzernamen eingeben sollst das da grau hinterlegt ist "Benutzername" das ist ein hint
 
  • Danke
Reaktionen: Mayalein
Kollen schrieb:
Hi,

Clean & Build -> Run

OMG! Es hat funktioniert!!!! :biggrin: Danke! Danke! Danke!

Aber was genau hab ich denn jetzt da gemacht?
 
Hi, wenn du auf clean drückst wird der schon vorher erstellte code gelöscht, und der ganze Codeblock nochmal sozusagen von vorne neu erstellt (Als wäre es das erste Mal) (R Klasse wird natürlich auch neu generiert).

mfg
 
  • Danke
Reaktionen: Mayalein
Das Buch habe ich auch durchgelesen, für den Einstieg nicht schlecht :)
 
Hi,
ich finde das Buch ok.. Ich habs bis zur hälfte durchgelesen und da waren schon einige Fehler vom Buch her. Zudem war mir das Buch an ein paar Stellen zu ungenau beschrieben.
Also der Aussage, die er am Anfang des Buches schreibt, dass das Buch perfekt für Anfänger ist, sogar für Leute die komplett von null anfangen, kann ich nicht zustimmen:/
 
Also ich muss sagen, dass es echt schwierig ist, für jemanden, der keine Ahnung vom Programmieren hat.

Ich hab auch schon wieder ein weiteres Problem, wobei ich glaube, dass das nichts mit dem Buch zu tun hat.

Und zwar findet Eclipse meine Layout-Dateien nicht. Ich hab dann rechts immer dieses kleine rote Kreuz, und als Fehler activity_insektenfang cannot be resolved or is not a field. Das kann aber gar nicht sein, da die Datei ja da ist und bei dieser HelloWorld-App hat es funktioniert und es nichts anders, bis auf den Dateinamen.

Ich verstehe das alles nicht und bin kurz vorm Verzweifeln... :confused:
 
Hi, du hast wahrscheinlich
Code:
 import android.R;
ausversehen importiert, einfach löschen

mfg
 
Kollen schrieb:
Hi, du hast wahrscheinlich
Code:
 import android.R;
ausversehen importiert, einfach löschen

mfg

Tatsächlich! Danke! Tja, da muss man erst mal drauf kommen! So als absolut nichtswissendes Etwas... :smile:
 
Hallo und Guten Morgen! Ich bin's mal wieder....

Ich bin jetzt bei dieser Mückenfang App an nem Punkt, wo ich die schonmal ausprobieren kann und zumindest etwas passieren sollte, wenn ich auf den Start-Button klicke. Es sollte sich nämlich eigentlich der Game-Screen (bisher noch leer, egal..) zeigen.

Und es passiert mal wieder nichts...

Mein Code sieht folgendermaßen aus, bis auf den letzten Absatz genau wie im Buch.

Code:
package de.androidnewcomer.insektenfang;


import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class InsektenfangActivity extends Activity implements
OnClickListener {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_insektenfang);
        Button button = (Button) findViewById(R.id.button1);
        button.setOnClickListener(this);
    }

   public void OnClick(View v){
       startActivity(new Intent(this,GameActivity.class));
   }

public void onClick(View arg0) {
    // TODO Auto-generated method stub
    
}

}

Hat einer ne Ahnung, was ich diesmal falsch gemacht hab?
In diesem LogCat-dingens steht mal wieder so einiges, worauf muss ich da achten? Also was mir nen Hinweis darauf geben könnte, woran es liegt.
 

Ähnliche Themen

G
Antworten
0
Aufrufe
107
Gerdchen07
G
G
Antworten
1
Aufrufe
369
Gerdchen07
G
G
Antworten
13
Aufrufe
581
Gerdchen07
G
L
Antworten
2
Aufrufe
476
Lexub
L
migi01
Antworten
26
Aufrufe
1.929
migi01
migi01
Zurück
Oben Unten