Hallo mal eine Frage wie mit welchen Methoden greifst du auf das Datei System zu.
Ab Q wird es mur noch mit scoped storage gehen.
https://commonsware.com/blog/2…ories-durable-access.html
Hallo mal eine Frage wie mit welchen Methoden greifst du auf das Datei System zu.
Ab Q wird es mur noch mit scoped storage gehen.
https://commonsware.com/blog/2…ories-durable-access.html
Hallo willommen im Forum.
Als erstes eine Main Methode wie in Java gibt es in Android nicht. Schaue dir an wie in Android eine activity aussehen hat.
Der Einstieg eigentlich die onCreate.
Auserdem glaube ich nicht das dein Vorhaben in die MySQL zuschreiben ohne php geht.
Ob der Verbindungs aufbau so klapp wie in deinen Code? Glaube eher nein.
Hallo schon zu hören das es geht.
Nur wundert es mich das nach dem drehen das die Fragmente noch da sein sollen.
Vom Fragmentmanager werden keine Fragmente automatisch erstellt das macht du selber in der onCreateView .
Eigentlich müsste die auch beim drehen wieder durchlaufen werden . kannste mit einem log mal prüfen.
damit erstellt du die Fagmente.
m_fragment_termine_1 = new TermineSub();
m_adapter_fragmente.addFragment(m_fragment_termine_1);
Wenn die Instanz nicht mehr gültig ist sollte das der GC freigeben.
Zeige mal wie du das mit dem Fragmentmanager und Constructor machst.
Kannst ja vorher prüfen ob die Objekte existieren vor dem neu erstellen.
if (m_fragment_termine_1 == Null{
m_fragment_termine_1 = new TermineSub();
m_adapter_fragmente.addFragment(m_fragment_termine_1);
}
Hallo warum packst du es micht in ein Try & Catch Block?
Wieso speicherst du nicht gleich den int Wert in den Sprefs. Und list ihn auch als solchen wieder aus.
Hallo
Habe mir mal deinen Code angesehen.
Frage wann und von wo wird die Methode „deleteFragment“ , im Adapter, aufgerufen was soll die überhaupt ? Wieso müssen die Fragmente gelöscht werden? Das macht der GC eigentlich selber wenn die Instanzen nicht merhr gültig sind.
Was soll überhaupt das „notifyDataSetChanged()“ in der Add Methode im Adapter?
Auch ein „notify“ in der deleteFragment Methode finde ich sinnlos.
Die Methode notifyDataSetChanged() innerhalb des Adapters aufzurufen ist für mich sinnlos.
Die Methode ist dafür gedacht von außerhalb das neu Zeichnen zu veranlassen. Nicht intern sich selber.
Warum musst du die liste der Fragments im Constructor löschen wird nicht problematisch sein nur wieso?
Ob das mit dem Fragment Manager aus der Activity so richtig ist kann ich nicht sagen. Habe ich bis jetzt noch nicht gemacht ein Fragment im Fragment.
Da aber es beim ersten Aufbau geht wird das wohl nicht der Grund des Absturz sein.
Welcher Fehler kommt den beim Absturz?
Wo in welcher Methode passierst es denn. Mache dir doch ein paar Logs um das nach zu vollziehen.
Bein drehen wird ja die Activity neu gestartet und auch die onCreate wieder durchlaufen.
Es müssten somit auch deine Fragmente wider neu aufgerufen werden. Und auch der Pager in dem ersten Fragment.
Was ich aber bei dem ersten Fragment nicht richtig finde ist das du es nicht lädst sonder ersetzt. „transaction.replace“ zu dem Zeitpunkt ist eigentlich noch kein Fragment da zum austauschen.
Ich würde transaction.add( … machen. Das erste Fragment sollte immer add sein und anschießend tauschen was du ja gar nicht machst denn du hast ja nur ein Fragment.
Vielleicht machst du auch etwas in der onCreate was beim zweiten Aufruf zum Absturz führt.
Hallo
Um hier eine sinnvolle aussage machen zu können solltest du uns den Code der MyFragment Klasse zeigen.
Ich verstehe auch nicht warum du ein Fragment erstellt und in diesen wieder drei Fragmente mit einen Viewpager.
Ohne Code kommen wir hier nicht weiter.
PS.
ZitatIn diesem Fragment (MyFragment) ist ein ViewPager mit 3 Fragmenten, welche in einem Adapter zum Activity-FragmentManager hinzugefügt werden.
Wenn dem wirklich so ist kann das nicht gehen.
Du hast eine Activity mit einem Layout in dem ist eine FrameLayout das als Container für das Fragment dient.
Wenn du in der Klasse MyFragment wieder ein Fragment startest oder einen Viewpager benutzt, dann muss in dem Layout was du in der MyFragment Klasse lädst wieder ein Container, ViewPager sein. Und in genau diesen Container sollte die Drei Fragmente geladen werden. Nicht in dem Container des Activity Layouts.
Mit dem Activity-FragmentManager haben die drei Fragmente nichts mehr zu tun.
Hoffe das es etwas klarer geworden ist.
Hallo
Richtig erstens solltest du das revers geodecoding in einen eigenen Thread Asynctask machen.
Das Problem scheint öfters aufzutreten wenn die Netzwerk Verbindung beim revers coding zusammen bricht. Das Scheit ein Problem im Android Framework zu sein. Ist auch etwas Geräte und API Version abhängig.
Du solltest vor dem Decoding prüfen wie die Netzwerk Verbindung ist.
status != NETWORK_STATUS_NOT_CONNECTED
Du könntest auch einen Receiver dafür einrichten der die Verbindung überwacht.
Auch würde ich das im grade mal weg lassen
buildToolsVersion "29.0.2"
oder auch die 28.0.3 er nehmen,
Wahrscheinlich ist es sogar besser noch tiefer zu gehen API 26.
Aber bitte immer beides gleich.
Ich würde testweise das SDK 29 im SDK Manager entfernen. Ist noch beta
hallo
versuche es mal so
Habe mal zum Verständnis eine etwas ausführlicherer Version gemacht.
Um zu wissen welche Objekte erstellt benutzt werden.
Die Doku der Objekte sollte du dir immer ansehen.
val am : AssetManager = getAssets()
val ad : AssetFileDescriptor = am.openfd("testdatei.pdf")
val pf : ParcelFileDescriptor = ad.getParcelFileDescriptor()
val renderer : PdfRenderer = PdfRenderer(pf)
https://developer.android.com/…nt/Context.html#getAssets()
https://developer.android.com/…l#openFd(java.lang.String)
https://developer.android.com/…/AssetFileDescriptor.html
https://developer.android.com/…/graphics/pdf/PdfRenderer
Hallo Wilkommen
erstmal eine Frage wie so "var internalId: Int = 1"
und nicht "val" var ist doch eine konstante nicht
var ist doch in Kotlin eine Konstante nicht veränderbar.
Auch wenn "Int" in Kotlin ein Objekt ist wird es aber vom Compiler in eine primitive Java „int“ übersetzt, die dann "final" ist.
Kotlin : var internalId: Int = 1
Java : final int internalId = 1;
Hallo du solltest dir mal den LifeCycle eines Fragments ansehen.
https://developer.android.com/guide/components/fragments
Erstens wegen der Reihenfolge wie die Methoden durch laufen werden.
Zweitens um zu wissen was in den Methoden gemacht wird, wozu sie da sind.
In der onCreate ist noch kein Layout geladen. Das wird erst in der onCreateView gemacht.
Somit kannst du in der onCreate noch nicht auf dein Layout zugreifen da es noch nicht vorhanden ist.
Am sinnvollsten machst du das in der onActivityCreated.
Das ist kommt dem oncreate der Activity gleich.
Oder auch in der onCreateView da hast du auch die View (layout) zur Verfügung.
hallo
Ich habe es mir schon gedacht das es an den parsen der edittexte zu int liegt.
Das sagt auch das error log.
Die int variablen num1 uns 2 solltest du erst nach dem prüfen erstellen.
Oder es zu mindestens in ein try catch packen .
Denn genau da stürz das Programm ab wenn die edittexte lehr sind.
ZitatIch bin in der Zwischenzeit schon weiter gekommen, und bin im Prinzip auf die gleiche Idee gekommen, wie in deinem Vorschlag:
Das ist keine Idee, sondern die ausführliche Schreibweise.
ZitatUnd wenn der Sendebefehl vom UI-Thread im Handler ankommt, will ich den Befehl über diesen Socket versenden.
Nur komme da wieder nicht dran.
Wie so wenn du den Handler als Innere Klasse von Thread macht kommst du an die Kassen Variablen auch aus dem Handler ran.
Hallo das mit dem Import habe ich gesagt, weil du von Compiler Problemen gesprochen hast.
Irgendwie verstehe ich dein Problem nicht.
Du hast schon einen funktionierenden Code im letzten Thread von mir bekommen.
In der Run Methode nur einen neuen Handler erstellen mit mHandler = new Handler();
Reicht nicht, du hast jetzt einen neuern Handler in den du nichts überschreiben kannst.
Du kannst da nichts Oberrieden.
Das mit den geschweiften Klammern ist eine Kurzform von einer abgeleiteten Kasse. Alles was in den Klammern steht ist in der abgeleiteten Klasse.
Du kannst dir auch eine Klasse richtig mit Namen und extends erstellen und die benutzen. Ausführlicher weg.
Wenn du nicht alles in der Run Methode haben willst warum erstellt du dir nicht einzelne Methoden und rufst die in der Run auf. Alles was du im Run aufrufst läuft im Thread.
Dein zweites Beispiel wird und kann nie gehen. Deine Bearbeitung Methode ist jetzt eine neue Methode in der Kasse von Thread
nicht vom Handler.
Die wird nie aufgerufen. Ist mit Sicherheit auch ausgegraut.
Ich glaube du solltest dir die Grundlagen von OOP nochmal ansehen.
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
class LooperThread extends Thread {
public Handler mHandler ;
class MyHandler extends Handler{
@Override
public void handleMessage(Message msg) {
switch (msg.what){
case 0:
doLongRunningOperation();
break;
case 1:
doLong2();
break;
}
}
}
public void run() {
Looper.prepare();
mHandler = new MyHandler();
Looper.loop();
}
void doLongRunningOperation() {
// Add long running operation here.
}
void doLong2() {
// Add long running operation here.
}
}
Alles anzeigen
Activity
public class LooperActivity extends AppCompatActivity {
LooperThread mLooperThread;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mLooperThread = new LooperThread();
mLooperThread.start();
}
public void onClick(View v) {
if (mLooperThread.mHandler != null) {
Message msg = mLooperThread.mHandler.obtainMessage(0);
mLooperThread.mHandler.sendMessage(msg);
}
}
protected void onDestroy() {
super.onDestroy();
mLooperThread.mHandler.getLooper().quit();
}
}
Alles anzeigen
Hallo
welche imports hast du den?
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
Hallo
Welche Fehler Meldung bekommst du den, Poste mal dein Error Log.
Eigentlich müsste es gehen.
Zeige mal deine gesamte onClick Methode und wo du die EditTexte setzt.
Sind die auch in der onClick.
Auch interessant ist weiche Eigenschaft du für deinen EditText im Layout hast.
Text, Numerisch.
Wenn zb in den EditText ein Text und keine Zahl steht brauchst du dich nicht wundern warum beim Addieren die App abstürzt.
Du siehst es gibt mehre Gründe warum das passieren kann.
Das können wir aber leider nicht sehen.
Ohne Error Log und Code ist Hilfe schwer.
Poste den Code bitte in den dafür vorgesehen Blog.
@Adreoiddas sollte gehen. Das alleine wird es nicht sein.
Ich denke der Fehler ligt wo anders. Aber ohne Code, Error log wird das nichts.
Mit einer sinnvollen Hilfe. Deine Variante würde gehen.
Nur würde ich sagen das Fehler wo anders ist und auch das es wo anders abstürzt.
Hallo
Der Thread ist zwar geschlossen.
Wolte aber nochmal nachfragen ob es den mit dem Honor 10 geklappt hat?
Oder hast du das Projekt beendet aufgegeben?
Also die Instanz media Player brauchst du nicht.
Und wenn doch bitte nicht im Klassenrumpf bei android bitte keine Statements im klassenrumpf.
MediaPlayer mp; im Rumpf reicht.
Im service
Hallo was mir als erstes auf fällt ist.
Warum zweimal Intent ?
startService(new Intent(new Intent(PlayerClient.this, MediaPlayerService.class)));
Frage was für einen Service willst du machen einen normalen oder einen Intent Service?
Für beide hast du keine ausführende Methode.
Normaler gebunden oder nichtgebunden ist es die „onStartComand“
IntentServise„onHandleIntent“
Die aufgerufen wird in der du deine Musik abspielen solltest.
https://www.zoftino.com/android-intentservice-example
https://www.vogella.com/tutori…roidServices/article.html
da du die Klassen Def. nicht mitgegeben hast weiß ich nicht was du machen willst.
Hallo das SheredPref kannst du auch im Fragment machen du brauchst dazu aber den Context der Activity.
Denn kannst du dir mit getActivity() holen sollte das nicht mehr gehen dann den umweg über
onAttach wo du den Kontext bekommst und in einer Klassen Variablen speichern kannst.
SharedPreferences preferences = getActivity().getSharedPreferences(…..
SharedPreferences preferences = context.getSharedPreferences(…..
Auch für aus gaben auf der Ui brauchst du den Context , sowie findViewById .....