Naja alternativ kann man ja auch einfach ne Gruppe zusammen trommeln die des Öfteren "Webinare" bzw. Diskussionsrunden ausrichtet. Wäre sicherlich einfacher Interessenten zu finden, als Regional begrenzt.
Beiträge von drumliner
-
-
Echt mal Lucas bist nicht auf dem laufenden Kannst dann ja mal gern zu uns kommen, wenn alles steht
-
Besser wäre es wenn du deine SQLite Helper Klasse anhängen würdest so könen wir direkt sehen was falsch am Source ist Alternativ kannst auch gleich das ganze Projekt hochladen
Edit: Da isst man einmal nebenbei da schreibt der Phil schon xD
-
Hauptsächlich geht es hier darum weitere Statistiken zu sammeln und die Ergebnisse zu vergleichen. Die Implementierung von Sensor wird sehr wahrscheinlich Herstellerabhängig sein.
-
hehe kann aber auch schnell passieren Viel Spaß beim berechnen deines BMI's Hast du wenigstens alles berücksichtig? Alter, Geschlecht, Körpergröße, Amputationen etc?
Sag an was bei M / 85kg / 178cm rauskommt
-
Hallo Henny,
herzlich Willkommen im Forum. Dein Fehler sagt bereits aus was los ist Und zwar können die Resourcen nicht geladen werden. Scheinbar hat Eclipse die benötigte R Klasse, welche du unter deinprojektname/gen/deinpaket/R.java findest noch nicht bzw. gar nicht eingelesen bzw. generiert.
Wenn dort keine Datei ist, kann es gut möglich sein, dass du einen Fehler in irgendeiner deiner XML Dateien hast. Oft ist es allerdings auch nur ein Problem von Eclipse. Clean dazu einfach mal dein Projekt: Menü -> Project -> Clean.
Wenn der Fehler weiterhin auftritt, schaue bitte in die Imports deiner Klassen. Wichtig ist, dass nicht die Android Standard Resource hierfür verwendest (import android.R;).
-
Hi Katsche,
bitte bitte lern die Grundlagen. Du hast in deiner App einen ganz simplen Fehler begangen. Kein Wunder wieso das TextView auch nichts angezeigt hat. Schliesslich wurde innerhalb deiner MainActivity nichts weiter definiert, was das TextView veranlassen könnte überhaupt etwas im TextView anzuzeigen zu lassen.
Du hast innerhalb deiner MainActivity eine weitere innere Klasse erzeugt. Mit dieser machst du rein gar nichts, aber in dieser befindet sich genau jener Code den du benötigst um die Werte zu lesen und im TextView zu setzen. Da nirgends ersichtlich ist, das du überhaupt eine Instanz der inneren Klasse erzeugen willst, habe ich dir den Code mal wie folgt abgeändert:
Java
Alles anzeigenpackage com.example.seekbar; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.widget.SeekBar; import android.widget.SeekBar.OnSeekBarChangeListener; import android.widget.TextView; public class MainActivity extends Activity { private SeekBar seekbar; private TextView value; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); value = (TextView) findViewById(R.id.textview); seekbar = (SeekBar) findViewById(R.id.seekbar); seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { value.setText("SeekBar value is " + progress); } public void onStartTrackingTouch(SeekBar seekBar) { } public void onStopTrackingTouch(SeekBar seekBar) { } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
Im Tutorial ist übrigens auch keinerlei Hinweis darauf eine innere Klasse daraus zu erstellen Wenn du schon ein Tutorial durcharbeitest, solltest du es bitte gewissenhaft abarbeiten, sonst bleibt dein Lernlevel weiterhin ziemlich gering.
-
Ich schick dir per PN meine E-Mailadresse
-
Hi beagle,
das kann ich gern in den nächsten Tagen für dich angehen. Evtl. schreibst du mir einfach eine Private Nachricht mit weiteren Details (Was du genau wie haben möchtest). Somit ist gewährleistet, dass sich das Beispiel an nahe an deinen Vorstellungen bewegt.
-
Hi whitenexx,
du hast hier mehrere Möglichkeiten, wobei ich mich Persönlich für das Kombinierte Verfahren in meinen Apps entschieden habe. Bei der Übertragung eines Symmetrischen Keys kann es schnell passieren, dass der Key abhanden kommt und missbraucht wird (Bei Symmetrischer Übertragung). Hierbei haben beide Seiten den gleichen Schlüssel. Das Verfahren ist zwar relativ schnell, aber unter den Verschlüsselungsverfahren eher noch am unsichersten Mittels einer Asymmetrischen Verbindung hast du dieses Problem nicht, allerdings ist dies Verfahren sehr langsam. Für eine Asymetrische Verschlüsselung benötigst du folgendes:
Server besitzt Private Key
Gerät besitzt nur Public KeyHierfür verwendest du den Public Key und der Server kann die eingehende Verb. mit dem Private Key entschlüsseln.
Meine bevorzugte Methode, das kombinierte Verfahren ist eine Gute Mischung aus beiden Welten (daher kombiniert). Dabei
hat der Server wieder den Private Key und dein Mobiles Gerät nur den Public Key. Im nächsten Schritt generierst du innerhalb der App einen Symetrischen Schlüssel nimmst den und Verschlüsselst diesen mit deinem Public Key. Diesen kannst du nun zum Server senden. Auf dem Server verwendest du dann den Private Key um den Symetrischen Schlüssel wieder zu entschlüsseln.Nun haben beide Seiten einen Symetrischen Schlüssel der vorher nicht abgefangen werden konnte Somit kannst du nun für die weitere Verbindung die Symetrische Verschlüsselung nutzen
Ich hoffe dieser kleine Ausflug ist dir bei deinem Vorhaben behilflich und hat dich nicht zu sehr verwirrt (Meine Kollegen sind immer verwirrt, wenn ich Ihnen diesen Weg erkläre. Das Problem ist hier einfach die vielen Wege. So etwas Grafisch zu erklären ist natürlich deutlich verständlicher)
P.S: Über https:// wäre es natürlich auch möglich. Allerdings erzeugt dieser Weg massig overhead wie ich finde. (Erst Serverzert. prüfen, checksummen vergleich etc. pp)
-
Du solltest dringend einzelne Dinge die du tust in der Doku studieren. Ein Thread zu "stoppen" ist alles andere als Sinnvoll. Die Methode ist veraltet und bringt die App im neueren OS unweigerlich zum Abstürzen. Auch finish() solltest du nicht vor dem starten einer neuen Activity aufführen. Das sind nur wenige von vielen Problemen die die App besitzt.
Ich rate dir an die Grundlagen zu lernen und Schritt für Schritt die App zu entwickeln. Dabei solltest du wie bereits erwähnt die Doku studieren, damit du auch wirklich etwas anständiges produzierst.
Was ich neben den ganzen "Problemen" auch schlimm finde, sind Methoden die eine unzählige Anzahl an Parametern besitzen. Dafür gibt es bessere Wege. Als Beispiel erstellst du eine Klasse, welche all deine Daten die du speichern möchtest beinhaltest.
Bsp:
Java
Alles anzeigenpackage com.cargoonhand.stowageprovision.data; public class Contact { private long id; private String vehicle; private String bumpertobumper; private String sidetoside; private String vehicletoship; private String gearposition_d; private String keyposition_d; private String lashing_d; private String remarks_d; private String across; private String ramp; private String gearposition_e; private String keyposition_e; private String lashing_e; private String remarks_e; public long getId() { return id; } public void setId(long id) { this.id = id; } public String getVehicle() { return vehicle; } public void setVehicle(String vehicle) { this.vehicle = vehicle; } public String getBumpertobumper() { return bumpertobumper; } public void setBumpertobumper(String bumpertobumper) { this.bumpertobumper = bumpertobumper; } public String getSidetoside() { return sidetoside; } public void setSidetoside(String sidetoside) { this.sidetoside = sidetoside; } public String getVehicletoship() { return vehicletoship; } public void setVehicletoship(String vehicletoship) { this.vehicletoship = vehicletoship; } public String getGearposition_d() { return gearposition_d; } public void setGearposition_d(String gearposition_d) { this.gearposition_d = gearposition_d; } public String getKeyposition_d() { return keyposition_d; } public void setKeyposition_d(String keyposition_d) { this.keyposition_d = keyposition_d; } public String getLashing_d() { return lashing_d; } public void setLashing_d(String lashing_d) { this.lashing_d = lashing_d; } public String getRemarks_d() { return remarks_d; } public void setRemarks_d(String remarks_d) { this.remarks_d = remarks_d; } public String getAcross() { return across; } public void setAcross(String across) { this.across = across; } public String getRamp() { return ramp; } public void setRamp(String ramp) { this.ramp = ramp; } public String getGearposition_e() { return gearposition_e; } public void setGearposition_e(String gearposition_e) { this.gearposition_e = gearposition_e; } public String getKeyposition_e() { return keyposition_e; } public void setKeyposition_e(String keyposition_e) { this.keyposition_e = keyposition_e; } public String getLashing_e() { return lashing_e; } public void setLashing_e(String lashing_e) { this.lashing_e = lashing_e; } public String getRemarks_e() { return remarks_e; } public void setRemarks_e(String remarks_e) { this.remarks_e = remarks_e; } }
Hiermit hast du nun die Möglichkeit ein eigenes Contact Objekt zu erstellen:
Dieses Objekt solltest du dann der Methode public void insertContact(Contact contact) übergeben. Hierin kannst du dann die Werte auslesen und setzen:
JavaContentValues newCon = new ContentValues(); newCon.put("vehicle", contact.getVehicle()); etc.......
gleiches gilt dann für's auslesen etc.
Als heutiges Schlusswort erwähne ich noch einmal: Schau dir bitte die Grundlagen ,lass dir Zeit beim fertigstellen der App und ließ die Doch. Besser bedacht erstellt, als schnell fehlerbehaftet und schlecht zu warten
Falls du weiterhin Probleme hast, kann ich dir auch gern gegen einer kleinen Spende eine kleine Beispiel App erstellen
-
Zitat
das myObject ist doch dann meine "ViewDatensatz.java" klasse oder nicht
Da ich bislang keine Einsicht in deinem Quelltext hatte, kann ich das nicht genau sagen. Wenn du die Daten und deiner Instanz der ViewDatensatz Klasse setzt dann ja.
Zitatwas meinst du mit externem hoster hochladen ?
Es gibt externe Dienstleister die es ermöglichen Daten zur Verfügung zu stellen. Dazu gehört z.b:
usw.
Wenn wir den Quelltext sehen, können wir auch direkter antworten bzw. komplette Hilfestellungen in Form von korrigierten/erweiterten Quelltext.
-
myObject repräsentiert hier eine Instanz deines Objektes. Hier mal als Beispiel:
Java
Alles anzeigenpublic class MyObject { private long id; private String localizedDescription; public long getId() { return id; } public void setId(long id) { this.id = id; } public String getLocalizedDescription() { return localizedDescription; } public void setLocalizedDescription(String localizedDescription) { this.localizedDescription = localizedDescription; } }
Du kannst nun beim laden deiner Daten im DatabaseHelper eine neue Instanz mit den Werten erzeugen. Diese kannst du dann Problemlos verwenden.
LANGUAGE_DE repräsentiert eine Spalte deiner Datenbank, nämlich genau die die deine Beschreibung für die Deutsche Sprache beinhaltet. (lashing_d)
Zitat
kann ich denn wenn ich alles lade - wie es jetzt der fall ist, die nichtbenötigten daten - also bei deutsch alle englischen texte ausblenden ?Kannst du, brauchst du in dem Beispiel aber gar nicht, da du nur auf deinem Objekt (myObject) die Methode getLocalizedDescription() aufrufen brauchst. Da du die Werte dort gespeichert hast steht dir also damit genau die benötigte Übersetzung in dem Objekt zur Verfügung.
Solltest du noch Probleme beim Verständnis haben, lad doch einfach mal dein Projekt auf einen externem Hoster hoch.
-
Ach mach dir selbst nicht so nen Druck. Diese Sachen brauchst du nicht zu fürchten. So bleibt das Lernlevel etwas niedriger, also einfach selbstbewusst dran gehen und ggf. die Doku lesen. Steht ja verdammt viel zu dem Thema drin
Ich selbst nutze den LOOKUP_KEY. Von der Performance / Geschwindigkeit spürt man im normalfall eh keinen unterschied (Sehe ich zumindest so ).
ZitatEven If this happens, the content URI CONTENT_LOOKUP_URI combined with contact's LOOKUP_KEY will still point to the contact row, so you can use LOOKUP_KEY to maintain links to "favorite" contacts, and so forth.
Weitgehendere Informationen findest du hier:
-
Du brauchst einfach nur die Version hochzählen, App signieren und hochladen. Danach wird dein Update im PlayStore angezeigt.
Du musst dabei selbstverständlich den gleichen Keystore verwenden, den du in deiner ersten Version verwendet hast.
-
Du brauchst nur beim Laden die von dir benötigte Sprache in deinem Objekt setzen. Danach kannst du dein Objekt ja einfach verwenden und dein TextView setzen.
Da du ja nun die Variante über XML verwendest hier ein Beispiel hierfür:
JavaString sprache = getResources().getString(R.id.sprache); if(sprache.equals("de")){ myObject.setLocalizedDescription(cursor.getString(cursor.getColumnIndex(LANGUAGE_DE))); } else { myObject.setLocalizedDescription(cursor.getString(cursor.getColumnIndex(LANGUAGE_EN))); }
Nach dem laden setzt du nun ganz einfach dein TextView:
-
Na dann holst dir halt die Daten mit der gewählten ID raus und nutzt davon je nach Spracheinstellung die Zeile (langde bzw langen) und weißt diese dem Objekt beim erzeugen zu.
Wie du unterscheiden kannst haben wir dir ja bereits auf 3 verschiedenen Arten mitgeteilt.
-
Du brauchst dafür doch auch nicht zwei Datenbanken. Wenn du in einer Spalte den Lang-Code hast und diesen z.b in deiner Query einbaust passt doch alles:
-
Die SupportLibrary bietet dir hierfür die benötigte Abwärtskompatibilität
siehe:
-
Zitat
muss ich allerdings wohl in nen hintergrund Thread machen oder so... habe mal gelesen dass sowas geht, damit die Liste beim scrollen nicht so hakt.
Schau dir dazu mal die speziell erstellten Loader an. Die Loader helfen dir dabei die Daten im Hintergrund zu verarbeiten. Mit dem LoaderManager stehen dir weitere Callbacks zur Verfügung (Willst ja schliesslich etwas mit den Daten machen ^^)
*Muss mich hiermit auch noch detaillierter auseinandersetzen