App reagiert nicht mehr nachdem Edittext selected wird. Nested Layouts.

  • Antworten:9
  • Bentwortet
Marco
  • Forum-Beiträge: 28

15.07.2015, 15:13:47 via Website

Guten Tag,

ich hab hier anscheinend ein kleines Problem und komme nicht mehr weiter. ACHTUNG ES WIRD KOMPLIZIERT!!!! ;-)

Folgenden Aufbau versuche ich mal zu beschreiben.

1 Fragment ---> android.support.v4.app.FragmentTabHost

2 Fragment ---> android.support.v4.view.ViewPager, welches im FragmentTabHost drin ist.

im ViewPager hab ich nun 4 Fragmente. In diesen Fragmenten benutze ich einige Teile überall deshalb hab ich diese Teile ausgelagert. Es handelt sich hierbei um EditTexts in einer speziellen Anordnung, welche ich einfach wie folgt abfrage und dann im Programmcode einem Layout hinzufüge:

@SuppressLint("InflateParams")
public View getView() {
    View view = activity.getLayoutInflater().inflate(
            R.layout.fragment_amount, null);
    amount = (EditText) view.findViewById(R.id.require_amount);
    calculate = (Button) view.findViewById(R.id.calculateButton);
    return view;
}

Jetzt kommt das witzige:
Ich habe das getestet und es funktioniert auf meinen Geräten wunderbar. Ein Tester scheint allerdings damit Probleme zu haben und meint das die App nicht mehr reagieren würde sobald er ein Edittext selektieren möchte.

Auffällig ist auch die Tatsache das ich im Emulator(Genymotion) beim Selectieren der Edittext und der eingabe in einem anderen Edittext lande. Ich erhalte auch absolut keine Meldung im Logcat diesbezüglich.

Hoffe jemand hat eine Idee woran es liegen könnte. Wie gesagt, viele Tester haben absolut kein Problem damit. Der Nutzer welches ein Problem hat benutzt Android 4.4.2

Gruß,
Marco

Antworten
Marco
  • Forum-Beiträge: 28

15.07.2015, 16:55:35 via Website

Okey ich weiß nun etwas mehr.

ViePager in einem Tabhost scheint keine gute Idee zu sein. Ich glaube dass das weiterreichen der Keyevents irgendwie nicht funktioniert. Es muss also leider eine andere Lösung her. Ich werde also die Tabhosts verschwinden lassen und eben die Zwei Tabs in unterschiedliche Activities packen. Ist sehr schade dass ich das anscheinend nicht hinbekomme.

Sollte doch jemand etwas darüber wissen, immer her damit, wäre sehr dankbar!

Antworten
Sven R.
  • Forum-Beiträge: 1.904

15.07.2015, 17:12:32 via App

https://developer.android.com/samples/SlidingTabsBasic/src/com.example.android.common/view/SlidingTabLayout.html kopieren und in den Projekt einfügen und benutzen oder in der neuen Design Support Library findest du auch sowas. Ich würde die Library nehmen. Das sollte eigentlich nur die Beschriftung übernehmen. Der ViewPager ist schon richtig. Um die Tabs und den ViewPager musst du kein besonderes View drum rum machen. Ich hoffe ich habe deinen Aufbau verstanden. 😁

Wenn dir mein Beitrag gefällt, kannst dich einfach mit dem 👍 "Danke"-Button auf der Website dieses Forums bedanken. 😀

Why Java? - Because I can't C#

Antworten
Marco
  • Forum-Beiträge: 28

15.07.2015, 18:07:32 via Website

Vielen Dank für die Antwort.

Die Slides mit Viewpager ist überhaupt kein Problem. Das Problem liegt darin das ich eine Tabauswahl habe von zwei unterschiedlichen Fragmenten. Fragment A und Fragment B. Also soll ich in den Tabs zwischen Fragment A und B wechseln können.

Fragment A besitzt irgendetwas.

Fragment B besitzt wiederrum einen ViewPager mit eigener Ttitleview. Hier liegt der Knackpunkt und ich glaube eben diese Kombination funktioniert so nicht.

— geändert am 15.07.2015, 18:12:07

Antworten
Sven R.
  • Forum-Beiträge: 1.904

15.07.2015, 19:57:07 via App

Also soll man zwischen den beiden oberen Fragmenten gar nicht links und rechts wischen können, sondern nur über die Tabs wechseln können?! Dann müsste der obere ViewPager also nicht auf wischen reagieren. Hast du das deaktiviert(wenn das einfach geht)?

Edit: http://stackoverflow.com/a/13668216

— geändert am 15.07.2015, 19:59:48

Wenn dir mein Beitrag gefällt, kannst dich einfach mit dem 👍 "Danke"-Button auf der Website dieses Forums bedanken. 😀

Why Java? - Because I can't C#

Antworten
Marco
  • Forum-Beiträge: 28

15.07.2015, 21:03:39 via Website

Genau so sollte es sein. Ich hab aber oben kein ViewPager sondern ein Framelayout mit FragmentTabHost.

Antworten
Sven R.
  • Forum-Beiträge: 1.904

15.07.2015, 21:16:13 via App

Aber der TabHost hat doch in sich die Tabs und ein Frame Layout(in welches dann Fragment A oder B rein kommen)?!
Ich würde den Tab Host wegnehmen und einzeln die Labels mit SlidingTabLayout oder Lib und den Inhalt(A und B) mit einem ViewPager der nicht manuell scrollbar ist.
Im Fragment B kann dann alles rein was du willst(eigentlich auch ein weiterer ViewPager).

— geändert am 15.07.2015, 21:18:25

Wenn dir mein Beitrag gefällt, kannst dich einfach mit dem 👍 "Danke"-Button auf der Website dieses Forums bedanken. 😀

Why Java? - Because I can't C#

Marco

Antworten
Marco
  • Forum-Beiträge: 28

15.07.2015, 21:41:37 via Website

Ja genau so sollte es eigentlich funktionieren oder es war so gedacht.

Das werde ich morgen nochmal probieren. Momentan habe ich das so gelöst das ich jetzt eine zusätzliche Activity für die zweite Fragment gebaut habe und diese nun über ein Icon in der Iconbar gewechselt werden können... Ist nur nicht die perfekte Lösung da dann bei einem Wechsel erneut eine Server-Abfrage getätigt werden muss. Obwohl das ja bei der Tabhost auch so war....

Eine gute Sache hat das aber. Ich hab nun mehr Platz in der View da keine Tabs mehr da sind. Bei nur zwei Tabs funktioniert das ja grad noch aber wenn es eben mehrere sind dann wird es schon schwieriger.

Ich ärger mich nur dass das mit dem ViewPager in einem FragmentTabHost nicht funktioniert.

Danke für die Hilfe!

Antworten
Sven R.
  • Forum-Beiträge: 1.904

15.07.2015, 22:05:37 via App

Warum willst du denn überhaupt unbedingt den TabHost benutzen?

Wenn dir mein Beitrag gefällt, kannst dich einfach mit dem 👍 "Danke"-Button auf der Website dieses Forums bedanken. 😀

Why Java? - Because I can't C#

Antworten
Marco
  • Forum-Beiträge: 28

16.07.2015, 10:00:10 via Website

Naja ich möchte den jetzt nicht unbedingt benutzen aber ich finde das er dann wenigstens als veraltet markiert gehört.

Ich danke die Sven R. für deine Hilfe. Ich werde heute morgen den Tabhost durch ein Viewpager ersetzen.

Antworten