Hi welchen PersianDatePicker benutzt du? Gibt es da nicht die Möglichkeit das Datum in das Unix Zeitvormat zu konvertieren?
dieses Könntest du dann im Gregorianischen Kalender Laden.
Beiträge von nono124
-
-
Hi versuche es mal so
- <ImageButton
- android:layout_width="0Dp"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:src="@mipmap/icon_biocomposites"
- android:background="@null"
- android:layout_marginLeft="10.0dip"
- android:layout_marginTop="5.0dip"
- android:onClick="biocomposites"/>
in allen Button das gewicht auf 1 und dafür die Breite auf 0dp
-
Hi kommt die "TransactionTooLargeException" nur wenn du ein Bild aus der Galery auswählst und zuschneidest.
oder wenn du ein Bild mit der Cam machst und es dann in der Galery zuschneidest. -
Hallo wird denn die Datei auf dem Externspeicher erstellt? Und ist da auch das Bild von der Cam drin?
Hast du auch zugriff zum Externspeicher Preemision gesetst?Ansonsten schau die das mal an
Externer Inhalt gist.github.comInhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt. -
@Ben Was meinst du damit? Wenn das trello gemeint ist da habe ich Zugriff.
-
@Kogoro-Christopher hast du noch Interesse an der App?
-
Hi zu dem Thema kann ich Dir leider keinen Ratschlag geben.
Hoffe es melden sich noch viele.
-
-
ansonsten hättest du noch die Möglichkeit die Datensätze die du hinzufügen willst dierekt aus dem Code einzugeben oder sie in einer txt in den asset zu speichern.
Eine direkte pathangabe zu den wusste hat bei mir auch nicht geklappt. Deshalb über den assetmanager und virtuellen path.
-
So nun meine Version.
Die Datenbank in den Assets öffnen habe ich nicht geschaft.
Kopiere die Db aus den Assets in den App Folder und öffne sie von dort.
Am ende wird sie wieder gelöscht.Java
Alles anzeigenpublic class DB_Datensatz2 { // Variablen public long id; public String datum; public int zeitein; /** * Konstruktor */ public DB_Datensatz2(String datum, int zeitein ) { this.datum = datum; this.zeitein = zeitein; id = -1; // wird erst beim Einfügen in die Datenbank erzeugt } /** * Konstruktor */ public DB_Datensatz2() { } }
Java
Alles anzeigen//----------------------------------------------------------------------------------------- public class DBZugriff_test extends SQLiteOpenHelper { private SQLiteDatabase db; private String tabelle="Zeiten"; static final int DatenBankVersion = 2; private static final String DatenBankName = "Zeiterfassung.db"; private Context activity; DB_Datensatz2 datensatz; private String zeitenSQL = "CREATE TABLE Zeiten (_id INTEGER PRIMARY KEY AUTOINCREMENT, " + "datum TEXT," + "zeitein DATE )"; //----------------------------------------------------------------------------------------- public DBZugriff_test(Context activity) { super(activity, DatenBankName, null, DatenBankVersion); db = this.getWritableDatabase(); } //----------------------------------------------------------------------------------------- @Override /** * Wird nur aufgerufen, wenn eine Datenbank neu erzeugt wird */ public void onCreate(SQLiteDatabase db) { try { // Tabelle anlegen db.execSQL(zeitenSQL); } catch(Exception ex) { } } //----------------------------------------------------------------------------------------- @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { if(oldVersion < 2 && newVersion >= 2) { Cursor cu; // DB aus den Assets Kopieren try { InputStream inputStream = activity.getAssets().open("Zeiterfassung.db"); String outFileName = activity.getDatabasePath("Zeiterfassung_kopy.db").toString(); OutputStream outputStream = new FileOutputStream(outFileName); byte[]buff = new byte[1024]; int length = 0; while ((length = inputStream.read(buff)) > 0) { outputStream.write(buff, 0, length); } outputStream.flush(); outputStream.close(); Log.w("MainActivity","DB copied"); }catch (Exception e) { e.printStackTrace(); } SQLiteDatabase assetDb = activity.openOrCreateDatabase(activity.getDatabasePath("Zeiterfassung_kopy.db").toString(),activity.MODE_PRIVATE, null); String[] spalten = new String[]{"_id","datum","zeitein" }; String ein ="1"; String aus ="2"; cu = assetDb.query(tabelle, spalten, "_id >= '"+ein+"'AND _id <= '"+aus+"' ", null, null, null, "_id ASC"); if (cu.getCount() != 0) { cu.moveToFirst(); do { datensatz = new DB_Datensatz2(cu.getString(1), cu.getInt(2)); ContentValues daten = erzeugeDatenObjekt(datensatz); assetDb.insert(tabelle, null, daten); } while (cu.moveToNext()); File file = new File(activity.getDatabasePath("Zeiterfassung_kopy.db").toString()); boolean deleted = file.delete(); } } } //----------------------------------------------------------------------------------------- /** * Hier noch evtl. eigene Aufräumarbeiten durchführen */ @Override public synchronized void close() { if(db != null) { db.close(); db = null; } super.close(); } //----------------------------------------------------------------------------------------- public long datensatzEinfügen(DB_Datensatz2 datensatz) { try { ContentValues daten = erzeugeDatenObjekt(datensatz); return db.insert(tabelle, null, daten); } catch(Exception ex) { return -1; } } //--------------------------------------------------------------------- public Cursor leseDatensatzTag(String suchString) { //String.valueOf String[] suchen ={suchString}; String[] spalten = new String[]{"_id","datum","zeitein" }; Cursor cu; cu = db.query(tabelle, spalten,"datum=?", suchen , null, null, null); return cu; } //--------------------------------------------------------------------- public Cursor leseAlleDaten() { String[] suchen ={"2000-01-01"}; String[] spalten = new String[]{"_id","datum","zeitein" }; return db.query(tabelle, spalten, "datum <>?",suchen, null, null, "datum ASC"); } //----------------------------------------------------------------------------------------- private ContentValues erzeugeDatenObjekt(DB_Datensatz2 datensatz) { ContentValues daten = new ContentValues(); if(datensatz.datum != null) daten.put("datum", datensatz.datum); daten.put("zeitein", datensatz.zeitein); return daten; } }
-
habe das aus dem Kopf geschrieben in einen Editor ohne IDE
Werde heute Nachmitta testen. -
So geht das nicht. erstelle dir eine neue Klasse für die dB der Assets. in etwa so
ist aus einem alten projekt von mir . habe im momet wenig zeit.
zugriff dbZugriff = new DBZugriff(this);Code
Alles anzeigen//----------------------------------------------------------------------------------------- public class DBZugriff extends SQLiteOpenHelper { private SQLiteDatabase db; private String tabelle; static final int DatenBankVersion = 2 ; private static final String DatenBankName = getAssets()+"Db.db"; private static final String TAG = DBZugriff.class.getSimpleName(); DB_Datensatz datensatz; private String zeitenSQL = "CREATE TABLE Zeiten (_id INTEGER PRIMARY KEY AUTOINCREMENT, " + "datum TEXT," + "zeitein DATE, " + )"; //----------------------------------------------------------------------------------------- public DBZugriff(Context activity) { super(activity, DatenBankName, null, DatenBankVersion); Log.d(TAG, "Konstrucktor"); tabelle = "Zeiten"; db = this.getWritableDatabase(); //db.execSQL("DROP TABLE Bemerkung"); } //----------------------------------------------------------------------------------------- @Override /** * Wird nur aufgerufen, wenn eine Datenbank neu erzeugt wird */ public void onCreate(SQLiteDatabase db) { try { // Tabelle anlegen db.execSQL(zeitenSQL); Log.d(TAG, "datenbank wird angelegt"); } catch(Exception ex) { Log.e("carpelibrum", ex.getMessage()); } } //----------------------------------------------------------------------------------------- @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { Einstellungen pref =new Einstellungen(); if(oldVersion < 2 && newVersion >= 2) { } } //----------------------------------------------------------------------------------------- /** * Hier noch evtl. eigene Aufräumarbeiten durchführen */ @Override public synchronized void close() { if(db != null) { db.close(); db = null; } super.close(); } // / / //--------------------------------------------------------------------- public Cursor leseAlleDaten() { String[] suchen ={"2000-01-01"}; String[] spalten = new String[]{"_id","datum","zeitein" }; return db.query(tabelle, spalten, "datum <>?",suchen, null, null, "datum ASC"); } / }
-
Hallo am besten du erstellst dir eine extra Klasse für das auslesen der Datenbank in den Assets. Die DB Version soltest du am besten in einer Konstanten speichern und im gesamten Projekt benutzen. Du weißt doch welche Version du in den Asssets mit giebst.
bzw. du auch in deiner App nach dem Update verwendest.Dann hast du zwei DB zu gleichen Zeit geöffnet und kannst von der einen Daten abfragen( lesen in den Cursor) und anschliesend in die andere einfügen ( schreiben).
Wenn du ein Update der App heraus giebst und in dieser die DB änderst must du immer die Version mit ändern. die DB in den Assets und die App DB solten die gleiche Version haben. Denn wenn ein User erst jetzt deine App installirt wird ja die DB aus den Assets kopiert sonst nicht. So solteste es sein.
Die DB in den Assets brauchst du nicht kopieren wenn die app schon vorhanden installiert war.
Zur Info die create Metohde der DB wird nur duchlaufen wenn es die Db noch nicht giebt also nur einmal.
Später nicht wieder.
Die upgrate Methode wird duchlaufen wenn die DB schon erstellt ist. Dort prüfst du die Versionen.
Und fürst dort deinen Code für die änderunern an der DB aus.private String DB_PATH = getAssets().getLocales();
private static String DB_NAME = "Daten.db";
public void openDataBase() throws SQLException{
//Open the database
String myPath = DB_PATH + DB_NAME;
myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
}
}Ps. werde versuchen am WE ein par Code Zeilen zu schreiben.
-
Oh dann wird es schwierig für dich. Dazu solltest du zumindest java Grundkenntnisse haben oder dir erst mal a eignen. Noch nie ein kleines Programm geschrieben zb. Für PC in Basic oder auf einen alten Home Computern?
-
Hallo Ben, habe mich auf github angemeldet. Sollte es schon einen Anfang geben hier mein username " Jogimuc "
Würde mich über eine Einladung zum Projekt freuen.
Mfg Jörg. -
Hallo, Willkommen im Forum.
Zu deiner Frage. Welche Programmier Kenntnisse hast du, hast du vielleicht schon mal eine Android app geschrieben?
Zum Thema Baukastesystem kann ich nicht viel sagen. Den einzigen den ich kenne ist Appinovetor, ist mir zu unflexibel.
Ansonstenn finde ich es eine interessante App Idee. -
Ok werde mir einen zulegen erstellen. Finde es auch besser mit github. Wie ist das dort. Jeder hat seinen Account und einer eröffnet dann das Projekt und lädt die anderen ein. Muß mir das erst mal anschauen. Habe da bis jetzt noch nicht gemacht.
-
Das mit den Plus minus Tasten weiß ich. Habe die ja da auch geholfen. Deshalb sollst du deine Datetenbank bei der Abfrage sortieren lassen. Schaue die die query answeisung an mit order by ACS sortirst du bei der Abfrage. Dein cursor ist dann sortirst egal in welcher Reihenfolge die Daten wirglich in der DB sind. Dafür must du brauchst du eins Spalte die sich sortieren läßt zb. Datum selber verwalte Index Nummer... Was dir beliebt. Schaue dir etwas SQL an. Was alles mit der SELECT Anweisung möglich ist. Das geht auch mit der query oder RAwquery Methode von Android
Gruß Jörg -
also sqldiff ist ein Differenz utiliti was auf einem pc läuft kann dir nicht sagen ob das auf android verfügbar ist denke nein.
Das mit den id Nummer ist eigentlich egal wenn du wegen einer Sortierung d eine Nummer brauchst dann füge selber eine Spalte hin zu mit einer Nummer .
Ich meine du sollst die Datenbank in den assets öffnen daraus die neuen Daten in einen Cursor abfragen und in der app Datenbank einfügen mit insert. Die id s sind dann zwar durcheinander das macht nichts du sortiert doch selber deine Daten. Dazu ist eine Datenbank da.
Wenn du es bis we nicht schaffst werde ich versuchen etwas Code zu schreiben.
Wenn unbedingt die id Nummern synchron mit deinen sein müssen. Könntest du das autoinkrement für die Zeit des Updates ausschalten und dann die id selber setzen. Am ende wieder einschalten. Wie ich so sagte finde ich diesen weg nutzlos,wird auch kaum einer machen.
Wenn du sortiert durch deine Daten scrollen willst da mache eine sortierte Abfrage der Datenbank,dann ist der Cursor sortiert.
Die id Nummern werden nie durchgehend sein was machst du wen der User Daten löscht und wieder neue eingiebt dann werden die auch nicht in die Lücken geschrieben. -
Ps. Wie ich sagte wird die Methode nur bei einen neuen unbekannten User ausgeführt. Und das nur einmal am Anfang. Bestehende User must du mit der anderen Methode abfangen. Steht auch in der von dir verlinkten Seite.
Deshalb ging es auf einen anderen Gerät mit neuen User auch. Das war eigentlich der Fehler.