Beiträge von antifish
-
-
Ja das geht, probiers mal so
Java
Alles anzeigenpublic class Connection_Layout extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { String s = "Hallo"; LinearLayout ll = inflater.inflate(R.layout.connection_layout, container, false); TextView tv = new TextView(this); tv.setText(s); tv.setX(100); tv.setY(100); ll.addView(tv); return ll; } }
-
Simpel: lass einfach das .addToBackStack weg, dann passiert mit drücken des Back Key nix mehr.
Zusätzlich würde ich dir empfehlen für die zwei Fragmente nur jeweils eine Variable zu verwenden, diese beim app-start zu initialisieren und dann nur noch zuzuweisen und nicht jedes mal neu zu initialisieren.
-
Das Bitmap decodieren gibt dir nur eine Referenz zum decodierten Bild zurück, welche niemals identisch sein wird zu einer anderen Referenz desselben decodierten Bildes.
Leg doch eine int Variable an mit der id des decodierten Bildes, dann kannst du später mit dieser vergleichen, vorallem auch ohne das Bild extra neu zu decodieren.Gruss
antifish -
Oder, falls du zu faul bist, folgendes aufrufen:
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder(
StrictMode.getThreadPolicy()).permitNetwork().build());Gruss
antifish -
Hi,
Super das es jetzt klappt. Das währe mein nächster Vorschlag gewesen, also die App mal komplett zu deinstallieren. Wahrscheinlich hatte das starten über Eclipse den selben Effekt. Vielleicht war deine sqlite db noch alt oder sonstige "Leichen" von einer älteren APK.
Würde dir sowieso mal das debugging mit dem angeschlossen handy, ein paar Breakpoints setzten, etc, empfehlen, macht das Leben sehr viel einfacherGruss
antifish -
Also folgendes:
Ich habe deinen Code mal übernommen. Wenn ich die openDataBase() weglasse, dann funktioniert es einwandfrei(im Emulator!!).
Braucht man die openDataBase() gar nicht?
Auf dem Handy funktioniert es mit dem Code auch nicht.
Ich weiß auch nicht genau ob ich deinen Code richtig eingebunden habe.
Ich habe eine MainActivity, die eine Implementation von einem TabWidget enthält. Diese Tabs rufen ja weitere Activitys auf.
Ich habe die createDataBase() nun in der Activity eingebaut, die beim Aufrufen der App als erstes unter den Tabs angezeigt wird.
Woran kann es denn liegen, dass es im Emulator einwandfrei funktioniert, aber auf dem Handy nicht?
Aber nochmals: Besten Dank für deine Bemühungen bis hier hin!!!!Gruss
M3doXX
Hallo M3doXX,
was heisst denn "es funktioniert nicht"? Absturz? Oder .DB wird nicht kopiert? Oder sonst was?
Einfach so kann ich dir das nicht sagen, wo das Problem liegt.
Am besten postet du mal die Ausgabe vom LogCat (kannst du ja in Eclipse zuschalten und nach deiner App filtern, dann siehts
du all die unnötigen anderen Messages nicht)Mit was für einer Android Version startest du dein Emulator? Und was für eine hast du auf dem Handy?
Gruss
antifish -
Danke antifish,
ich verstehe - macht natürlich Sinn. Wenn es so läuft, würde mich eins noch brennend interessieren. Kann man in einem Thread auch auf ein View-Element zugreifen um zu prüfen, ob ein Button geklickt wurde als Beispiel?
Muss ich eine Thread-Klasse erstellen, welche vom Thread erbt und dann überschreibe ich die run-Methode um ein View-Element zu übergeben oder gibt es einen Trick?
Du kannst aus einem Thread auf ein View element zugreifen, solange du eine Refernez dazu hast.
Allerdingst ist die Android UI ja Event basiert, also muss du nicht den Button abfragen ob er gedrückt ist, sonder der Button sagt dir wenn er gedrückt wird.
Dazu kannst du einen "Listener" kreieren und beim Button setzen, somit weiss der Button wem er Bescheid sagen muss wenn er gedrückt wird.
In Code für dein Beispiel etwas so:Button button = (Button)findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
changeColor.stop();
}
}); -
Hi,
im Anhang findest du ein .zip mit zwei Files, probiere diese aus, sind nur kleine Änderungen
zu deiner Routine in der MainActivity und MySQLiteHelper.
Wenn du etwas nicht verstehts, einfach fragen. Bei mir funktioniers im Emulator und auf
dem Handy.Gruss
antifish -
Wird das File dann erstellt und bleibt einfach leer? Oder gibts gar kein File? Kannst du mal prüfen wie oft er die Schleife macht wo du Inputstream liest und in Outputstream schreibst?
Ansonsten machst du ein .zip File des Sourcecodes (inkl asset) und schickst mal rüber, kann nur ein kleiner Fehler sein..Gruss
antifish -
Zitat
Das nichts passiert, heißt das er die Datenbank einfach nicht kopiert. Es gibt keine Fehlermeldung, nichts!
Also den Ordner gibts im Emulator und der Pfad müsste auch richtig sein.Dann kriege ich folgende Fehlermeldung:
Was kann ich tun? Ich verzweifle hier gerade!!
GrußM3doXX
Mhhh probier mal... + "\/"
-
Hallo M3doXX,
was heisst genau "Es passiert einfach gar nichts"? Bleibt deine APP hängen, oder kopiert er einfach die Datenbank nicht?
Am besten mal einen Breakpoint setzen und step-by-step durchgehen, ansonsten ist sehr schwer zu sagen was
das Problem ist, vorallem wenns keine Fehlermeldung gibt (auch im LogCat nicht?)
Einzige spontante Idee: Wenn du die App komplett deinstalliert hast, kann es sein dass es den Ordner "/...glandorf/databases"
noch nicht gibt? Oder wird der vom SQLiteOpenHelper erstellt? Arbeite normalerweise ohne den Helper...Du kannst mal proberen denn String DATABASE_PATH in deiner "public MySQLiteHelper(Context context){ .."
mit "DATABASE_PATH = this.myContext.getFilesDir().toString() + "/";" zu füllen.Gruss
antifishIch kriege weder eine Exception noch stürzt er ab. Es passiert einfach gar nichts.
In der onCreate werden ja die Tabellen erstellt. Jetzt hab ich einfach darunter noch die neue Methode copyDataBase() gesetzt.
Ich habe die App aufm Emulator komplett deinstalliert und wieder installiert.
Über eine Lösung für das Problem würd ich mich sehr freuen
GrußM3doXX
-
Hi,
Du kannst dein SQLITE file in den assets ordner kopieren, dann hast du ihn auch in der .APK / kannst beim ersten start darauf zugreifen und zb auf die sdkarte oder wo die db auch sein soll hinkopieren.
Ein Beispiel findest du hier :
http://thedevelopersinfo.com/2…/using-assets-in-android/Gruss antifish
-
Hallo Steusi,
Du darfst aus einem anderen Thread nichts an der UI ändern, das darf nur der UI-Thread, deswegen stürzts bei .invalidate() ab. Probier mal stattdessen .postInvalidate(), dies zeigt dem UI Thread an das er dein View neu zeichnen soll. Gibt auch andere Lösungen wie Activity.runOnUiThread() aber eigentlich sollte es so klappen.
Gruss antifish
-
Hallo Harri,
einen direkten Weg kenne ich nicht, du könntest aber probieren das Canvas Object auf ein Bitmap zu zeichnen und von diesem den pixel auszulesen?
JavaRectF path_rect = new RectF();path.computeBounds(path_rect, true); Bitmap bmp = Bitmap.createBitmap((int)path_rect.width(), (int)path_rect.height(), Config.ARGB_8888);Canvas canvas = new Canvas(bmp); canvas.drawPath(path, paint);int pixel = bmp.getPixel(x, y);
einfach mal probieren
-
mein Vorschlag währe das RelativeLayout zu verwenden, finde das
etwa das "mächtigste" Layout dass du zur Verfügung hast.Also als TopLayout ein Relative Layout, darin platzierst du deine 3 andere Layouts, zB 1xLinearLayout oben,
ScorllView mitte, 1xLinearLayout unten.
Das erste LinearLayout kannst du auf fixe Höhe 40pixel setzen und auf "align parent top" setzen, somit ist es
immer zuoberst ist, das zweite LinearLayout auch auf fixe Höhe 40Pixel, "align parent bottom" somit ist es immer
zuerst, dein Layout mit dem andere Inhalt (scrollview) kansnt du dann auf "below linearlayout1" und "above linearlayout2"
stellen, was es zwischen die zwei anderen setzthoffe ist etwa klar wie?
-
hallo matze,
direkt weiss ich keine lösung, aber hier scheint jemand das selbe
problem gehabt zu haben
http://stackoverflow.com/quest…g-default-item-backgroundfalls du das noch nicht gesehn hast...
anscheinend gibts auch einen status "focused" vielleicht muss du diesen noch
überschreiben? -
Warum fragst du mich das, hab ich was verpasst?
hab dich wohl mit dem fargotof verwechselt, ist korrigiert
-
ich verwende immer Ctrl-Space um die autovervollständigung aufzurufen, also nix mit
abcde...Z hinzufügen bei den Option, hilfreich um deine eigenen Variablen zu Vervollständigen.
Eclipse vervollständig auch die komplette Varaiable wenn er keine andere Möglichkeit kennen würde, zB
deine Variable heisst mAsdsdsd, du tipps mAs + Ctrl-Space und es sollte automaisch mAsdsdsd stehen...
kennt er mehrer vorschläge kannst du ja mit der pfeiltaste nacht unten / oben um den passenden
auszuwählen -
Hallo fargoTof
könnte deine Listener Klasse ein eigenes Interface implementieren? zB
danach müsste deine Listener Klasse einfach dieses Interface implementieren?
Solbad der Job abgearbeitet ist ruft er auf seinem registrieren Listener .jobFinished(this)
auf oder sowas?
Dein Listener könnte ja auch noch eine Refernez zum Job behalten und bei
jobFinished kontrolliere ob es derjenige ist den er gestartet hat?