Beiträge von nono124

    Hallo mit dem Haxm Treiber hatte ich auch schon mal ein Problem nach einem Update.
    Ich bin dann auf die Vorgänger Version zurückgegangen.


    Momentan ist 7.5.4 aktuellich, ich würde die 7.5.1 versuchen.




    Erstens installiere im SDK Manager die aktuelle Version. Starte aber nicht den Emulator.


    Im Manager unter Tools sollte 7.5.4 stehen. Nun verlasse das Studio.


    In Windows unter Apps deinstallierst du den Haxm da bei musst du Windows neu starten.
    Lade dir den alten Treiber runter


    https://github.com/intel/haxm/releases/tag/v7.5.1


    Entpacke und installiere ihn.

    Hallo
    Wird dir den in Zeile 24 auch ein Account zurückgegeben? Ich denke nein.
    Sonst würdest du gar nicht zu dem Fehler (Ausgabe) kommen.
    Dein resultCode in der onActivityResult ist bestimmt nicht OK = -1
    Somit hat der Intent schon nicht Funktioniert und du brauchst nicht weiter machen.



    Hast der User Überhaupt einen Account in Firebase?
    Ist deine App überhaupt mit Firebase verbunden?
    Ist das Singin in der Firebase Konsole auch aktiviert? Für Anmelden mit E-Mail freigeschalten?
    Wie machst du das überhaupt mit der Anmeldung, machst du das überhaupt?

    hallo habe mir eure App nicht angesehen. Runtergeladen ja aber gleich am Anfang wird nach einer Kartenzahlung verlangt und man soll sich Registern.
    Somit wurde die app bei mir wider gelöscht.


    Zu den Kategorien ich würde nicht Kategorie sagen sondern eher über welche Art und Weise dein Handy mit dem Display des Autos kommuniziert.


    Die meiste Logik und auch Verarbeitung läuft auf deinem Handy ohne Handy ist das eigentlich meiner Meinung nach nutzlos.


    Im Grunde ist es eigentlich so da dein Handy das Display des Autos nutzt. Viel mehr nicht. Deshalb auch nur die zwei Haupt Verbindungen.


    Ich habe so ein Auto leider nicht. Eine richtige eigenständige app ist das nicht.
    Auch bei den Navigationssystem app die es gibt wird das Handy benutzt von dem der GPS Empfänger, das Internet. Zur Bedienung wird das Display vom Auto genutzt für den Sound wird auch das Radio vom Auto genutzt.
    Ohne ein verbundenes Handy läuft da eigentlich nichts.


    Schaue dir doch erst mal richtig an was das eigentlich ist.

    Hallo

    Zitat

    Leider ist unsere App nicht in den Kategorien die offiziell unterstützt werden.

    Was genau meinst du eigentlich damit?
    Welche Kategorie? Wo habt ihr denn eure App? Ich meine damit von wo kann der user sie beziehen runterladen?

    Der Intent kommt doch in der NotenDetailsActivity an. Dort hast du ja auch versucht die Daten an das Fragment zu übergeben. Nur eben an die das falsche Instanz.


    Erste Möglichkeit beim Aufruf des Adapters übergibst du auch noch die Daten. Die Anzahl der Tabs und den Fragmentmanager übergibst du ja schon.


    Warum nicht auch die Daten. Aber bitte alle für alle Fragmente und nicht nur für das erste.


    Zweite Variante erstelle in der Adapter Klasse eine Methode dafür bei der du die Daten übergibst, warscheilich brauchst du auch den context der activity im Adapter um auf die Daten der db zuzugreifen.


    Um in der Activity auf die Methode aufzurufen. Benutzt du die Instanz des Adapters denn du in der Activity ja erstellt hast.


    Das ist eigentlich einfache OOP.


    Im Adapter übergibst du jedem Fragment seine Argumente, Daten.
    Die du dann in der Fragment Klasse anzeigen läst.


    Denke aber daran was ich am Anfang gesagt habe das immer die Nachbar Fragmente schon vorgeladen werden also es wird nicht beim anzeigen geupdatet.
    Wenn ich mir aber deinen Code ansehe ist das bei deinem Code nicht der Fall.
    Die Daten werden ja nicht in den Tabs verändert sondern nur angezeigt.
    Richtig?
    Somit kannst du Daten auch im Adapter nach dem Objekt erstellen jedem Fragment im bundle übergeben. Wie ich sagte für jedes Fragment nicht nur für das erste.




    Ich kann dir keinen Code geben da ich diese Woche nur am Handy bin.

    Hallo ein grundlegender fehler ist in der NotenDetailsActivity. Und zwar in der onCreate.
    Estens brauchst du da keine fragment Transaktion machen ist hier falsch. Das macht dein Viewpager für dich. Auch das übergeben der Argumente in der Activity onCreate ist falsch.
    In deinem Adapter erstelltes du die instanzen der Fragmente mit new. In der activity erstellst du für das erste fragment auch wieder ein neues Objekt mit New. Das ist nicht die gleiche Instanz.


    In der oncreate solltest du die argumente nicht übergeben. Und wenn ja dann sorge dafür das es auch die richtige Instanz ist. Das gleiche Objekt was dein Adapter erstellt.


    Parameter Übergabe würde ich im Adapter machen, habe ich auch schon mal gesagt.


    Somit ist es klar das du keine Argumente in den fragment die der viewpager erstellt hast. Und nichts angezeigt wird.


    Also baue dein Adapter um und übergebe da die Argumente.


    Oder benutze viewmodel.


    Wenn du dir msl eine neue app mit tabs vom Studio erstellen läßt siest du das Prinzip. Auch das da kein Transaktion on der activity notwendig ist.

    Hallo dann zeige doch mal etwas mehr von deinen Code.



    Was bekommst du alles von der DB?
    Du willst also die Daten die von der DB Kommen auf drei Tabs Fragmente aufteilen.
    Wie ist das ? Ändern sich die Daten von der DB wenn du von einen Fragment (Tab) zum anderen Swipst?
    Wenn nicht macht es eigentlich ja auch nichts das die onCreateView vom neuen Fragment beim sichtbar werden nicht aufgerufen wird. Da sie ja schon vorgeladen ist.



    Du könnstet die Daten für die einzelnen Fragmente in verschiedenen Listen oder Cursors Speichen und an die Fragmente Übergeben.



    Wie ich schon sagte wie sieht dein Adapter aus?
    Wie und wo holst du die Detaildaten zum DS?
    Wie Wo Übergiebst du die Daten an die Fargmente?


    Was hast du eine Fragment Klasse in der du verschiedene Daten einblenden willst oder hast du drei Fragmentkassen?


    Ich würde drei mit verschiedenen Layouts machen.



    Wenn sich die Daten beim Swipen von einen Tab zum anderen ändern musst du etwas mehr Aufwand machen denn die onCreateView wird ja beim sichtbar werden nicht durchlaufen.

    Hallo


    Wie ich gesehen habe warst du wieder Online. Deshalb nun auch eine Antwort von mir. Leider ist es oft so man gibt sich mühe eine Antwort zu schreiben und der TE schaut nicht mal nach, geht gar nicht online.




    Das Ganze ist eine Eigenart des ViewPager den du verwendest.


    Mit Hilfe des ViewPager ist es ja möglich auch zwischen den Taps zu Swipen.


    Damit das möglich ist werden immer die Nachbar Fragmente schon in den Speicher vorgeladen.


    Du schreibst du hast drei Fragmente, hast du denn auch drei Klassen? Ich denke du hast nur die eine „Tab1Fragment“ oder hast du in den anderen Klassen das gleiche Log?


    Da immer das Nachbar Fragment schon vorgeladen wird, die onCreateView auch drei mal gestartet.


    Eigentlich hat man drei Klassen. Dazu musst du aber auch den Adapter etwas bearbeiten und bestimmt auch dein Layout. Dann würde von jeder Kasse die onCreateView aufgerufen werden wenn ein Swipe erflogt. Beim ersten Start natürlich alle drei. Dann immer die Nachbarn. Die eigene onCrateView von dem Fragment was angezeigt wird zum Zeitpunkt des sichtbar Werdens nicht mehr aufgerufen.


    Mit dem View Pager wirst du immer das Problem haben.


    Damit deine Parameter also das „putin“ auch in den anderen Fragment schon beim voraus laden verfügbar ist wirst du wohl den Adapter etwas bearbeiten müssen.


    Sehr interessant währe wie dein Adapter „PageAdapter“ aussieht.


    Wo und wie hast du den die Tabs definiert Im Layout oder?


    Aufgrund dierser drei zeilen würde ich auf im Layout tippen.




    Was soll das eigentlich die Variablen die werden im Code gar nicht benutzt?


    TabItem tabChats = findViewById(R.id.tabPage1);
    TabItem tabStatus = findViewById(R.id.tabPage2);
    TabItem tabCalls = findViewById(R.id.tabPage3);

    Ich wollte eigentlich schon die Klasse NotificationsViewModel (das Fragment) für diese Save-Funktion nutzen, aber hier kann ich im "onClick"-Event die Funktion dann gar nicht finden, obwohl sie als public deklariert ist.

    In der Model Klasse gibt es kein onClick das ist nur eine Daten Klasse zum Austauschmit der Activity.
    Events haben da nichts zu suchen.



    Also scheint hier irgendwas mit den Events im Argen zu liegen.


    Wo ist den dein Button?


    Ich denke im Layout des Fragments. Also mache auch dort deinen Listner für den Button.


    Wie ich sagte Context der Activty benutzen.


    Denn das Event kommt in der Activty an und wenn du es in den Fragment bearbeitest brauchst du den Context.


    Auch ist es so dort wo du den intent startest sollte die Result Methode sein.




    in einen anderen Fragment oder in der activty kannst du nun auf das Model zugreifen.


    ViewModelProviders.of(this).get(NotificationsViewModel.class);

    Hallo also erstmals solltest du in deiner Result Methode auch die Superkasse aufrufen.

    Code
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            if (requestCode == 1234) {
                if (resultCode == RESULT_OK) {
                ....



    Leider funktioniert das ganze nicht. Er protokolliert mir auch nur diese Zeile raus:
    Log.d("savePopUp", "!?!?!?!");Die anderen Log-Einträge macht er erst gar nicht.


    Wenn du das alles in der onCreate der Popup Kasse machst ist die schon beendet bevor du eine Eingabe machen kannst.
    Auf jeden fall brauchst du einen Listner der wartet.
    Entweder du erstellst einen Button und wertest dort die Eingabe aus und machst dein Result. Oder du setzt auf den EditText einen textwatcher mit Listner.



    Die Funktion mit dem Aufruf des PopUps ist in meiner MainActivity. Der tatsächliche Button, der die Funktion aufruft, befindet sich aber auf einem Fragment.


    Finde ich falsch. Dort wo der Button ist solltest du auch dein Popup aufrufen. Und dort wo der Aufruf ist kommt auch das Result an.


    Denke daran im Fragment brauchst den Kontext der Activity zb. bei findViewByIdoder auch beim Intent.


    Code
    Intent intent = new Intent(getActivity(), PopUp.class);
    Zitat

    da ich die layoutView ja vorher dem Container hinzufüge


    Ja was haben wir den bei Java Variablen by Value oder by Reference?
    Java by Value nicht Reference. Somit weiß das System nichts von der Veränderung du must das richtige übergeben.
    Du hast ja auch den Container bekommen den erwartet auch das System zurück.
    Also dein Layout nicht nur eine View. Wenn es unrelevant währe bräuchte man den Rückgabewert ja nicht.

    Hallo


    Zeige mal deine Adapter Kasse aber bitte kein Bild.


    Erstes lasen sich Bilder schlecht lesen. Meistens fehlt etwas. Kopieren und Einfügen für eine eventuelle Antwort geht auch nicht.


    Poste den Code in den dafür vorgesehen Block.


    Eigentlich musst du dein Layout Returen und nicht das Image View.
    return itemView;

    Hallo


    Ich würde mal sagen das es an deinen Imports liegt.Im Projektfester ist ja die Kasse schon rot unterstrichen, wenn, in deiner Kasse ist auch einiges Rot also fehlen die Imports.


    Klicke mal auf das plus beim Import. Um sie zu sehen.


    Wen im Java Fiel etwas Rot ist gehe mit der Maus darauf und Klicke mal Alt + Enter und importiere die Klasse. Ich denke du hast die Alten Imports und nicht Androidx.


    Was hast du im GradleImportirt?

    Habe mir mal das Beispiel aus dem link angesehen und die zip geladen.


    Wie ich vermutete liegt das an dem Layout XML. Wenn du das Xml File aus den Zip in dein Projekt übernommen hast ist das kein wunder denn da ist ein Fehler. Dort wird zweimal für einen Button die gleiche ID benutzt das geht nicht.


    Wenn du dir das XML in Editor ansiehst ist das auch rot. Der Ressourcen Compiler wird das nicht richtig übersetzen somit ist die Datei nicht in der R Klasse.



    Ist auch genau das was ich dir gleich ohne mir das selber angesehen zu haben gesagt habe.


    Auf der Webseite ist auch der Fehler das soll beim zweiten Button bestimmt „trennen“ heißen.


    Das mit dem Import wird dir nichts bringen. Ist nicht der Fehler.

    Hallo ich würde mal sagen das etwas mit deinem layout nicht stimmt. Denke der Ressourcen Compiler schlägt etwas fehl.
    Wenn das rot ist heißt es das die Datei nicht in der R Klasse vorhanden ist.


    Mache mal ein new build. Damit die XML neu übersetzt werden.


    Ansonsten erstelle eine neuer XML Datei.


    Ps. Hast du auch den richtigen Import.
    import kotlinx.android.synthetic.main.activity_main.*


    Setze mal den Cursor in den roten Bereich und drücke Alt +Enter damit der Import eingefügt wird.

    Hallo
    In Android geht es nicht Statements im Klasserumpf zu verwenden.
    Du kannst da nur primitive Datentypen werte zuweisen.



    Im Klassenrumpf nur deklariere aber nicht setzen.
    Das initialisieren der Variablen gehört in die onCreate.



    Frage hast du auch die Activity im Manifest eingetragen?

    Hallo mit den Klassischen Datei Operationen„File.mkdir“ ist es eigentlich schon seit API 26 vorbei.
    https://stackoverflow.com/ques…working-on-android-api-26



    Ab APi 29 gibt es weitere Einschränkungen. Du wirst da nicht mehr um Storage Access Framework,
    Scoped Storage drum rum kommen.



    https://stackoverflow.com/ques…file-mkdirs-returns-false


    so etwas wie das hier geht schon seit API 26 nicht mehr.


    Code
    String pfad = Environment.getExternalStorageDirectory().toString();
    File dir = new File (pfad,"/Test" +"/Test2");
    boolean bo = dir.mkdirs();
    File file = new File(dir, "dateiname1");
    try {
    file.createNewFile();
    } catch (IOException e) {
    e.printStackTrace();
    }

    PS.
    Habe aber auch gleich eine Frage an dich.
    Wie ist das bei dir? Bei mir im Emulator wird der Ordner „storage/emulated/“ nicht angezeigt.
    Siehe Bild.