Fragen zum ContraintLaxout

  • Antworten:8
  • Bentwortet
Petra Ritter
  • Forum-Beiträge: 81

27.05.2020, 12:26:38 via Website

Guten Tag,

Da ich noch wenig Erfahrung mit den ConstaintLayout habe möchte ich hier zwei Fragen stellen.

Ich nehme für das ConstainLayout selber die beiden Attribute android:layout_width="match_parent" und android:layout_height="match_paren auf match_petent setzt werden müssen?

Sollte man z.B. für TextView auf allen vier Seiten ein Constraint setzen oder reicht es wenn nur zwei Constraints gesetzt werden?

Konkret geht es um das Layout meiner Testapp

Eigentlich wollte ich das Layout mit einem WevViewFragment erstellen, habe aber abgesehen, dass das seit API Level 28 "deprecated" ist (WebViewFragment).

Habe es bis jetzt noch nicht selbst fertiggebracht eine WebView in das Navigation Drawer einzubinden.

— geändert am 27.05.2020, 14:37:16

Kommentieren
Beste Antwort
Jokel
  • Forum-Beiträge: 1.527

28.05.2020, 15:46:54 via Website

Hallo
Du infatest dein layout zweimal.
Gib einfach das die View "v" zurück.
return v;
Nicht ein zweites Mal neu laden.

Hilfreich?
Petra RitterPascal P.
Kommentieren
Jokel
  • Forum-Beiträge: 1.527

27.05.2020, 17:25:17 via Website

Hallo
eigentlich reichen zwei Anfasser kommt aber immer darauf an wie dein Layout aussehen soll.
Zu dem Layout von dir ich würde die TextView aber beides auf „warp_content“ setzen sonst ist die Höhe bei jeder View bis zum Ende des Layouts.

Zu deinen Code was soll eigentlich die Methode „newInstance“ in beiden Fragmenten? Es ist für mich sinnlos in einem Fragment ein neues Objekt der eigenen Klasse zu erstellen. Auch das mit den Arguments Was soll das?
Die Methode wird gar nicht benutzt in deinem Code. Wo hast du das her?

Du sagst du hast es noch nicht geschafft ein Webwiev zu machen. In der Klasse machst du eigentlich gar nichts, das Layout laden und anzeigen mehr nicht.

Hilfreich?
Kommentieren
Petra Ritter
  • Forum-Beiträge: 81

27.05.2020, 18:11:44 via Website

Hallo Jokel,

Zu deiner Frage was was die Methode „newInstance“ soll, muss ich Dir gestehen, das weis ich auch nicht. Ich habe das Template "Navigation Drawer Activity" respektive habe ich einfach ein BlackFragment (File > New > Fragments) zum Projekt hinzugefügt und die Methode war in dem Code drinnen.

Wenn die Methode gar nicht ausgeführt wird, kommentiere ich sie erstmal aus und nachher wird sie gelöscht.

Das mit der Webview muss ich morgen nochmals anschauen.

Erst mal Danke für die Hilfe

Petra

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.527

27.05.2020, 18:53:46 via Website

Das Blank Fragment ist eigentlich eine Klasse (Fragment) die von einer anderen manuell aufgerufen wird.
Hier in dem Fall ist das sinnlos da die Klasse durch den NavDrawer aufgerufen wird.
Und da wird der Konstruktor benutzt und nicht die static Methode. Auch das mit den Parametern ist in diesem Fall sinnlos.

Das mit dem WebView hattest du ja schon mal angefangen aber jetzt hast du Garnichts mehr in der Klasse. In der onCrate macht nur das mit den Argumenten das brauchst du nicht. In der onCrateView lädst du nur das Layout und das ist alles was du tust von einer WebView außer den Namen der Klasse nichts zu sehen.

— geändert am 28.05.2020, 05:52:38

Hilfreich?
Kommentieren
Petra Ritter
  • Forum-Beiträge: 81

28.05.2020, 14:35:57 via Website

Hallo Jokel,

Irgendwie mache ich was falsch beim Aufruf der WebView und ich komme selbst nicht drauf was ich falsch mache. :'(

Mir wird die HTML-Datei nicht in der WebView angezeigt.

Ich wäre Dir sehr dankbar wenn Du Dir den Code hier mal anschauen könntest /WebViewFragment.java und mich wenigstens mal in die richtige Richtung schuppen könntest.

Irgendwie habe ich da grundsätzlich was nicht verstanden, ist nämlich nicht das erste Mal, das ich das Problem habe.

Liebe Grüsse

Petra Ritter

Hilfreich?
Kommentieren
Petra Ritter
  • Forum-Beiträge: 81

28.05.2020, 14:36:35 via Website

Hallo Jokel,

Irgendwie mache ich was falsch beim Aufruf der WebView.
Ich habe immer das Problem, das die lokale HTML-Datei nicht in die WebView geladen wird.
Irgendwie scheine ich da "auf der Leitung zu stehen".

Ich wäre Dir sehr dankbaren Du den Code w

Hilfreich?
Kommentieren
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

28.05.2020, 15:41:05 via Website

Hallo Petra,

du hast folgendes in deinem Code:

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View v = inflater.inflate (R.layout.fragment_web_view, container, false);
        WebView webView = (WebView) v.findViewById (R.id.webView);
        webView.loadUrl ("file:///android_asset/index.html");


        // Inflate the layout for this fragment
        return inflater.inflate (R.layout.fragment_web_view, container, false);

    }

Da initialisiert du die WebView mit der inflated view v gibtst aber eine neue unveränderte View zurück.
Du musst deine view v zurückgeben, damit das funktioniert also in der onCreateView ein

return v; //statt den inflater.inflate...

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Jokel
Kommentieren
Beste Antwort
Jokel
  • Forum-Beiträge: 1.527

28.05.2020, 15:46:54 via Website

Hallo
Du infatest dein layout zweimal.
Gib einfach das die View "v" zurück.
return v;
Nicht ein zweites Mal neu laden.

Hilfreich?
Petra RitterPascal P.
Kommentieren
Jokel
  • Forum-Beiträge: 1.527

28.05.2020, 15:48:08 via Website

Pascal wider schneller :(

Hilfreich?
Pascal P.
Kommentieren