Beiträge von nono124

    Zitat

    Kann es sein, dass das Loslassen (release) des Buttons das Sperren wieder aufhebt?

    nein das machst du ja selber in deinem Listener. In der letzten Zeile setzt du es ja wider true.
    Somit hast du es nur für wenige nanno sek False gesetzt.
    Benutze dazu einen Timer der nach einer Zeit es wieder auf true setzt. oder du benutzt einen zweiten Button zum wieder aktiv setzen.

    Hallo wenn du nur die zwei Befehle senden willst würde ich es so lassen wie es war.


    Du brauchst den Thread nicht selber beenden. Der beendet sich selber. Wen die Run Methode durlaufen ist und das ist auch so wenn die Verbindung abbricht und du in dem Catch Block ankommst danach ist der Thread bei dir beendet.


    Ein beenden eines Threads von außen würde zb bei einer Endlosschleife im Thread Sinn machen notwendig sein. In deinem Fall nicht.



    Das scheinst du etwas falsch verstanden zu haben.


    Auch ist es egal ob du dem Thread eine Variablegibst die auf das Objekt zeigst oder nicht, wenn der Thread beendet ist wird das Objekt auch aus den Speicher gelöscht. Das wirst du aber auch nicht unbedingt sofort sehen können . Das macht der GC wenn er dafür zeit hat oder de Speicher wirklich sehr stark voll ist. Dann werden nicht mehr benutzte Elemente gelöscht. Aber das Thema hatten wir ja schon mal.



    Der Punkt 1. von meinen Vorredner ist so also nicht ganz richtig. ob eine Variable benutzt wird oder nicht ist egal.
    intern wird immer ein Objekt erstllt und der GC hatt das unter kontrolle.


    Zum Thema beenden eine Threads von außen dazu würdest du das Objekt brauchen also eine Variable .



    Zitat

    Was wäre denn, wenn ich den in der Main-Activity erzeugten Thread einer Thread-Variablen zuweise?
    Würde er dann beendet und entfernt, wenn ich die Run-Methode mit return; verlasse?


    Ein Return in der run Methode würde ein internes beenden bedeuten.


    Beenden von außen dazu brachst du das Objekt also eine Variable und dann nicht .start() sondern .stop() .

    Hallo
    Das liegt daran das beim Handy drehen die Activity zerstört und neu gestartet wird. Auch die onCreate wird neu duchlaufen somit auch das Layout neu geladen. Es werden für alle Views neue Objekte erstellt.


    Dein Thread läuft weiter der bekommt nichts mit somit ist die ID nicht mehr gültig.


    Eine Möglichkeit wäre eine public Klassenvariable (staic Instanzvariable) zu benutzen.

    Android studio ist die offizielle Software das ist eine etwas veränderte Version von intellij.
    Glaube bis zu android studio 4.1 kannst du 32 bit nutzen. Danach nicht mehr.


    Python ist für Android nicht geeignet.
    Entweder Java oder Kotlin. Google will kotlin voran bringen und das zur offiziellen Sprache gemacht.


    Vileicht installierst du Linux auf den Rechner und Android studio gibt es auch für Linux.

    Hallo ich gehe mal davon aus das, du unter und für api 30 schreibst.
    Ab API 29 ist es nicht mehr so einfach möglich auf die sd karte gleich ob interner oder echte externe karte zuzugreifen.
    Ab 29 ist scroped memory und Zugriff auf sd nur noch mit storage access framework. Der Zugriff denn du versuchst geht noch bis api 28 für die interne Karte externe schon lange nicht mehr.

    Hallo



    Wie ruft man den von einem Modul aus die Ressource?



    Von welchen Modul sprechen wir hier eigentlich?




    OK du Programmierst mit Kotlin.
    Hier sind zwar String Interpolationen mit“$“ möglich.
    Bei der ersten „$packageName“ gehen ich mit du wirst da wohl deine Variable packageName.
    Beim zweiten „${R.raw.mastwurf}“ wurde ich sagen nein.
    Hiermit bekommst du nicht den Int der Ressourse.
    "R.raw.mastwurf" ist eigentlich auch nur ein String der so nicht aufgelöst wird. Da hilft dir die "{}" auch nicht.


    Schaue dir an was für ein String in deiner VideoScreen Klasse in dem Intent ankommt.



    Wie du dann in der Klasse versuchst auf deine Ressourse zuzugreifen sehen wir nicht.

    Hallo da wohl hier keiner fähig ist zu antworten, die Admins des Forums zwar manchmal online sind, aber nur schweigen und keine Hilfe geben.
    Das ist in anderen Forums besser hatte ich hier auch schon mal gesagt.
    Das sich die Betreiber dieses Forums zu wenig kümmern.


    Das Forum würde ich schon als fast Tot bezeichnen.
    OK ich versuche es mal.


    @B34ST


    ja du benutzt das alte onClick Tag in der Layout Xml Datei.
    Auch wenn du dadurch nicht die Id suchen (findviewbyid) und einen Listener auf den Button setzen musst.
    Musst du dich doch an die klassische allgemeine Form eines OnClicklistener halten.


    public void clear(){….// ist kein listner.


    public void clear(View v){…. // so sollte er sein


    Mit etwas Google suche hättest du das lösen können.




    Ich denke das die App jetzt nicht abstürzt aber sie wird bestimmt nicht das tun was du erwartest.


    Du willst eigentlich auf die View deiner Klasse „DrawView“ zugreifendie du in deinem Layout erstellt hast.


    Nur hast du nicht die Instanz der View geholt.
    Das Objekt was du von deiner Klasse erstellt hast, ist nicht dasselbe was beim erzeugen des Layout erstellt wurde.
    Deshalb wird dein Löschen auch nicht gehen.


    Beim „setContentView“ wird dein Layout aus der XML eingelesen und es wird aus allen in der XML Datei befindlichen View Elementen ein Objekt erstellt.


    Du musst schon auf die Instanz (Objekt) aus deinem Layout zugreifen.
    Wie das geht wiest du habe ich dir auch schon gesagt.


    So jetzt denke nach wie du z.b. auf eine TextViewaus deinem Layout zugreifst.
    Welche Methode du dazu brauchst um an das Objekt oder die Instanz zukommen.


    Grundlagen OOP.


    Ich werde hierzu keinen weiteren Beitrag schreiben.


    PS das Objekt was du von deiner Klasse in der onCreate erstellst brauchst du eigentlich nicht.

    Hallo du must dir schon von deiner view mittels der Id und findviewbyId für die Instanz holen. Was du versuchst zu benutzen ist die Klasse (groß Buchstaben) nicht das Objekt.


    Ist das selbe wie bei einer normalen view zb Textview.


    Grundlagen OOP lernnen würde ich sagen.
    Vieleicht auch die links die dir gegen werden lesen vorallen verstehen.
    Auch versuchen zu verstehen was die Fehlermeldung bedeutet.

    Den Button machst du ganz normal in deinem Layout und in der activity. Hat nichts mit der view Klasse zu tun.
    Ist das selbe wie in allen anderen activtys.


    Der Konstruktor hat damit nichts zu tun.
    Welchen Konstruktor du benutzen sollt habe ich dir gesagt natürlich mußt du da auch die super klasse aufrufen genau wie in dem link.

    Hallo ich hoffe du hast verstanden was ich meine.
    Du musst ein normales xml machen wie bei jeder activity. In disem layout fügst du deine von view abgeleitete klasse als widget ein. Das geht meistens nur im XML Code nicht im Designer.
    Dort gibst du die gleichen Parameter Höhe Breite...wie bei zb einem imageview an.


    Da aber somit der Klasse auch Parameter übergeben werden mußt du auch einen Konstruktor mit Context und Attribute erstellen.
    DrawView(Context context, AttributeSet attrs)......



    https://www.vogella.com/tutori…dCustomViews/article.html

    Code
    public boolean shouldOverrideUrlLoading(WebView viewx, String urlx) {
            if (urlx.startsWith("tel:")) {
                Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse(urlx));
                startActivity(intent);
                return false;
            }
            
            return true;
        }

    ob das mit deinem prüfen der url "urlx" so richtig ist kann ich nicht sagen. Dazu müsstest du schon Debuggen was in der Variablen enthalten ist.
    Vielleicht machst du ein Log an der Stelle und gibst so den Inhalt aus.


    Auch ist dein Intent wenn es überhaupt aufgerufen wird nun vollständig.
    Frage wo übergibst du denn die vermeintlichen Nummer. Die musst du dier schon aus der URL holten.
    Dein pars wird so auch nicht gegen das wird der Tel Dialer nicht verstehen.


    Lasse dir mal anzeigen was in dem String urlx ist.
    Setze einen brackpoint in den listener wenn du nicht weißt was das ist solltest du dich mal mit debuggen beschäftigen.

    Wieso hast du diese Methode zweimal?
    shouldOverrideUrlLoading


    Einmal in der onCreate reicht.


    Die zweite Methode wird bestimmt gar nicht aufgerufen werden.
    Zwei ist falsch macht hier keinen Sinn.


    Nur einen listener in der onCrate setzen. In dem die URL prüfen wenn es die gewünschte URL ist denn intent starten und false zurück geben.


    Ist die URL keine tel einfach true zurück geben ohne die URL neu zu laden.I



    Note: Do not call WebView#loadUrl(String) with the same URL and then return true. This unnecessarily cancels the current load and starts a new load with the same URL. The correct way to continue loading a given URL is to simply return false, without calling WebView#loadUrl(String).

    Hallo
    Wenn ich mir deinen Code so ansehe sehe ich das du meinen Link nicht gelesen hast.
    Du wolltest es doch selber machen. Sehe da wenig davon.



    Schaue dir mal an was setcontentview macht. Du übergibst da nur deine Klasse.
    Der Button wird so nie angezeigt werden.



    Sinnvoll wäre ein richtiges Xml Layout mit deiner Klasse als Widget zu machen dort auch den Button …. zu erstellen.



    Da zu brauchst du aber auch den richtigen Costrucktor in deiner Klasse.



    Und diese Layout lädst so wie sonst auch in setcontentview.

    Hallo
    Bei meiner Kamera geht das auch die stellt auch ein Wlan ohne Internet zur Verfügung.
    Kein Verbindung Abbruch auf dem Handy. Handy hat natürlich kein Internet zu dem Zeitpunkt.
    Nur ist das ein sogenanntes Adhoc oder WiFi Direkt. Der Fehler ist eher bei dem Router zu suchen oder besser bei der Verbindung zu dem router und was er an den Claint sendet was er überhaupt ist.