Gesucht wird: Tutorial für Ein- und Ausgabe von Zahlen

  • Antworten:6
Klaus K.
  • Forum-Beiträge: 4

01.11.2010, 19:52:04 via Website

Hallo Forum,

habe nun etliche Beginner-Tutorials gelesen, die sich inhaltlich oft gleichen und "Hello World" beschreiben.

Über diese Hürde bin ich schon drüber und stecke jetzt fest... die Beispiele in der Referenz von android verstehe ich noch nicht und die Einsteigerbeispiele sind mir zu einfach.

Ich suche daher ein Tutorial, indem die zweiten und dritten Schritte der android-Programmierung dargestellt werden.

z.B:
- Mathematische Berechnungen
- Formatierte Ausgabe von Zahlen (z.B. auf 2 Nachkommastellen runden)

Ich habe ein Codeschnipsel hier aus dem Forum probiert und bekomme es nicht zum laufen.

Inzwischen sehe ich zwischen den Zeilen schon weiße Mäuse !

Wünschenswert wäre mir die Einsicht in ein vollständiges Listing des Quellcodes, kein Schnipsel.

Hat jemand Lust dazu oder hat jemand schon sowas ?

Viele Grüße....

Klaus

Antworten
Ansgar M
  • Forum-Beiträge: 1.544

01.11.2010, 20:37:47 via Website

Hi,
ich hab mehrere Projekte, die fertig sind und (u.a.) solche Dinge tun können..
Ich finde es nur trotzdem irgendwie nicht richtig, hier die Codes fertig reinzustellen..
Wo genau hapert es denn?
Lg Ansgar
P.S. Ich glaub ich mach mal ein einfaches Programm, und poste das dann doch..
EDIT:
Fertig.. Scheint auch zu laufen..:grin: Ich weiß nicht, wie viel du schon weißt, habs also etwas ausführlicher und möglichst ohne Fachsprache geschrieben...
Wenn ihr Fehler entdeckt..-> Schreiben, ich lerne selbst noch :)

Was ist soll die App können?
Sie soll aus einer Zahl auf Knopfdruck die Wurzel ziehen und das Ergebnis auf 2 Nachkommastellen runden.

Mein Code der Activity:
1package am.dev.hellomaths;
2
3import android.app.Activity;
4import android.os.Bundle;
5import android.view.View;
6import android.view.View.OnClickListener;
7import android.widget.Button;
8import android.widget.EditText;
9import android.widget.TextView;
10
11public class HelloMathsActivity extends Activity
12 implements OnClickListener{
13 /** Called when the activity is first created. */
14
15 //Variablen für unseren Butten, EditText und TextView
16
17 private Button ButtonRECHNE;
18 private EditText EditTextZAHL;
19 private TextView TextViewERGEBNIS;
20
21
22 @Override
23 public void onCreate(Bundle savedInstanceState) {
24 super.onCreate(savedInstanceState);
25 setContentView(R.layout.main);
26
27 //jetzt muss die App wissen, wer was ist
28 ButtonRECHNE = (Button) findViewById(R.id.ButtonRECHNE);
29 EditTextZAHL = (EditText) findViewById(R.id.EditTextZAHL);
30 TextViewERGEBNIS = (TextView) findViewById(R.id.TextViewERGEBNIS);
31
32 //Dem OnClickListener muss gesagt werden, dass er auf den Button achten soll
33 ButtonRECHNE.setOnClickListener(this);
34
35 }
36
37 //OnClick: Wird aufgerufen, wenn geklickt wird..
38 @Override
39 public void onClick(View v) {
40 //(braucht man eigentlich nur bei mehreren Buttons)
41 //Zwischen den Buttons unterscheiden:
42 //v = View, auf die geklickt wurde, wird uns mitgegeben..
43
44 if(v == ButtonRECHNE){
45 //Hier wird das getan, was getan werden soll..
46
47 //Eine Variable für den Inhalt aus dem EditText-Feld
48 double zahl;
49
50 //Double Variablen enthalten Gleitkomma-Zahlen, Beispiel: 13.005
51 //Während Strings Zeichenketten, also Text enthalten..
52
53 //Diese erhält den Wert des Feldes als Zahl..
54 zahl = Float.valueOf(EditTextZAHL.getText().toString());
55
56 //Jetzt ändern wir die Zahl in die Wurzel von Zahl:
57 zahl = Math.sqrt(zahl);
58
59 //Jetzt runden wir auf 2 Nachkommastellen:
60 //Mit der Funktion Math.round(double) können wir eine Zahl auf eine ganze Zahl runden
61 //Also müssen wir erst mal 100 und danach durch 100 teilen. (für 2 Nachk.stellen)
62
63 zahl = (double)Math.round(zahl*100)/100;
64
65 //warum das double? Bei round ist das Ergebnis eine Integer Variable, eine ganze Zahl, die
66 // zwar durch 100 gerechnet werden kann, aber dann sofort ihre Nachkommastellen vergisst..
67
68 //Jetzt muss die Zahl nur noch ausgegeben werden..
69 TextViewERGEBNIS.setText("Ergebnis: " + zahl);
70
71 }
72 }
73}


Und der, der 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##Hier geben wir später unseren Text ein##
8<EditText
9 android:hint="Gebe eine Zahl ein"
10 android:id="@+id/EditTextZAHL"
11 android:layout_width="fill_parent"
12 android:layout_height="wrap_content"
13 android:numeric="decimal">
14 ##dieses decimal macht es uns einfach, weil es nur Zahlen erlaubt##
15
16</EditText>
17
18##Hier wird später draufgeklickt##
19<Button
20 android:text="Rechne die Wurzel und runde.."
21 android:id="@+id/ButtonRECHNE"
22 android:layout_width="fill_parent"
23 android:layout_height="wrap_content">
24</Button>
25
26##Hier wird das Ergebnis "reingeschrieben"##
27<TextView
28 android:text="Ergebnis"
29 android:id="@+id/TextViewERGEBNIS"
30 android:layout_width="fill_parent"
31 android:layout_height="wrap_content">
32</TextView>
33
34</LinearLayout>

Achja, eine Anmerkung noch: Ich hab schon gehört, das man für den Klick auf z.B. einen Button direkt eine Methode in der *.xml Layoutdatei definieren kann, nur wusste ich net, ab welcher Version Android das kann (und war zu faul zum Nachschlagen 8o )... Im Link steht was über die beiden.. Ab Android 1.6 ist das möglich...

Und noch die APK, zum Download..
Huch? Wie sind da die Permissions für die SD und das Telefon reingekommen? Kann mir das jemand erklären?

— geändert am 28.12.2010, 14:13:45

Antworten
San Blarnoi
  • Forum-Beiträge: 2.545

02.11.2010, 00:32:30 via Website

Wie sind da die Permissions für die SD und das Telefon reingekommen? Kann mir das jemand erklären?

Du hast gegen das SDK 1.5 compiliert und das Ergebnis auf einem Gerät mit Android >= 1.6 installiert.
Bis 1.5 gabs diese Permissions nicht, und darum werden die aus Gründen der Kompatibilität bei neueren Systemen automatisch ergänzt.

Antworten
Klaus K.
  • Forum-Beiträge: 4

02.11.2010, 15:54:15 via Website

Hallo Ansgar,

vielen Dank für Deine Mail.

Finde ich echt gut, dass Du diesen Quellcode bereitstellst.

Ich habe mich bisher in Sachen Mathematik und Android auf der Developer-Seite herumgeschlagen und versucht, diesen Code zu verstehen:

[code] // Print out a number using the localized number, currency,
// and percent format for each locale
Locale[] locales = NumberFormat.getAvailableLocales();
double myNumber = -1234.56;
NumberFormat format;
for (int j = 0; j < 3; ++j) {
System.out.println("FORMAT");
for (int i = 0; i < locales.length; ++i) {
if (locales[i].getCountry().length() == 0) {
// Skip language-only locales
continue;
}
System.out.print(locales[i].getDisplayName());
switch (j) {
case 0:
format = NumberFormat.getInstance(locales[i]);
break;
case 1:
format = NumberFormat.getCurrencyInstance(locales[i]);
break;
default:
format = NumberFormat.getPercentInstance(locales[i]);
break;
}
try {
// Assume format is a DecimalFormat
System.out.print(": "; + ((DecimalFormat)format).toPattern() + " -> "
+ form.format(myNumber));
} catch (Exception e) {
}
try {
System.out.println(" -> " + format.parse(form.format(myNumber)));
} catch (ParseException e) {
}
}
}
[/code]

Da wurde ich wohl auf eine andere Pferte gelockt.

Jetzt versuche ich erst mal Deinen Code zu verstehen.

Kannst Du mir übrigends erklären, was ich tun muß, um meine Apps als apk-Datei zu kompilieren damit ich diese Datei (wie Du hier) per Mail verschicken kann. Ich möchte meine Apps gern selbst auf meinem Handy installieren und nicht immer über die Debug-USB-Methode gehen.
Ich dachte immer, ich müsste ein gültiges Zertifikat besitzen und die App damit irgendwie signieren.

Erst mal danke bis hierher...

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

02.11.2010, 15:57:22 via Website

ich glaub eher du solltest ein java buch zur hand nehmen. deine probleme haben wenig mit android zu tun.

lg

swordiApps Blog - Website

Antworten
Klaus K.
  • Forum-Beiträge: 4

02.11.2010, 18:35:59 via Website

Hallo Markus,

ja, das glaube ich auch. Da ich zeitgleich mit Java und Android begonnen habe, war es für mich nicht immer klar, die Unterschiede zum "standard-java" zu erkennen.

Die Dokumentation auf der Android-Developer-Seite half mir da eigentlich nicht weiter weil meine Java-Bücher scheinbar eine andere Sprache behandelten. Jedenfalls habe ich in der Android-Doku andere Befehle gefunden als in den Java-Büchern verwendet wurden.

Nachdem ich mich hier im Forum umgeschaut habe wird mir vieles viel klarer.

Die Starthilfe hatte ich wohl benötigt.

Also... nochmals vielen Dank an das Forum

Antworten
Ansgar M
  • Forum-Beiträge: 1.544

02.11.2010, 20:27:50 via App

Hi,
dein Denkfehler aus dem Javacode ist, dass du keine println-Funktion in Android benutzen kannst..
Achja, ein Zertifikat kannste dir selbst erstellen.. Einfach rechte Maustaste auf den Projektordner und unter „Androidtools“ auf „Export signed Application pack..“ klicken.. Da sollte sich das dann klären.. Einfach probieren, wenn du es nicht auf Anhieb schaffst..
Noch was, wenn du Englisch kannst gibt es hier zB Java-Tutorials..
Lg Ansgar

— geändert am 02.11.2010, 20:29:25

Antworten