2017-03-23 1 views
0

Ich versuche, Anzeigelogik in der Surveilib-Bibliothek zu implementieren (https://github.com/AndreiD/surveylib). Dies ist eine Bibliothek zum Implementieren einer Umfrage-App. Es wird eine Reihe von Fragen und Eigenschaften in der JSON-Datei geben und diese Bibliothek bereitet abhängig von der JSON-Datei eine Reihe von Fragen vor.Android: Skip Current Fragment und lädt nächsten

Diese Bibliothek hat die Umfrage-App mithilfe von Fragments und ViewPager implementiert. Es gibt verschiedene Fragmente für verschiedene Arten von Fragebögen (z. B. Fragmente Ordner). Ich möchte die Anzeigelogik in diese Bibliothek einbinden, da einige Fragen in Abhängigkeit von den Antworten in den vorherigen Fragen möglicherweise nicht angezeigt werden. Ich habe Variablen in Questions.java (im Modellordner) erstellt.

Ich habe Probleme, ein Fragment zu überspringen und das nächste zu laden. Zum Beispiel möchte ich das Skip-Routing in dieser FragmentCheckboxes.java Datei implementieren. Basierend auf den Antworten der vorherigen Frage wird diese Frage möglicherweise nicht mit Checkboxen angezeigt. Ich habe diesen Teil so weit hinzugefügt:

@Override 
    public void setUserVisibleHint(boolean isVisibleToUser) { 


     if (isVisibleToUser) { 
      // called here 
      Log.d("Checkbox Fragment: ", q_data.getQuestionNo() + " setUserVisibleHint"); 
      String display_logic=q_data.getDisplayLogic(); 

      String condition_question=display_logic.split(",")[0]; 
      String condition_value=display_logic.split(",")[1]; 
      String response=Answers.getInstance().get_answer(condition_question); 
      Log.d("Display Logic", "Question: "+condition_question+", Condition _Value: "+ condition_value+", Response: "+response); 
      if(response.equals(condition_value)) 
      { 
       Log.d("Display Logic", "Skipping " + q_data.getQuestionNo()); 
       Answers.getInstance().put_answer(textview_q_title.getText().toString(), "N/A"); 
      // getView().setVisibility(View.GONE); 
       mContext=getActivity(); 
       ((SurveyActivity)mContext).go_to_next(); 

      } 
      else 
      { 
       super.setUserVisibleHint(isVisibleToUser); 
      } 

     } 
    } 

go_to_next() Funktion wird in SurveyActivity.java umgesetzt. Mein Problem ist, obwohl es die Funktion go_to_next() aufruft, dieses Fragment ist immer noch sichtbar und wenn ich auf "Weiter" klicke, überspringt es die nächste Frage, die ich nicht möchte. Ich möchte die aktuelle Frage überspringen und die nächste laden. Genauer gesagt, nehmen wir an, wir haben drei Fragen: Q1, Q2 und Q3. Q1 ist Optionsfeld und kann zwei Antworten haben: Ja und Nein. Wenn der Benutzer für Q1 Ja ausgewählt hat, werden wir Q2 überspringen und Q3 anzeigen. Andernfalls wird Q2 nach Q1 angezeigt.

In diesem speziellen Fall, wie kann ich ein Fragment in Android überspringen und die nächste laden?

Antwort

0

1. zuerst müssen Sie die Positionen der Fragmente in Sicht Pager-Adapter 2. während des Aufrufs gehen go_to_next() übergeben Sie die Position des Fragments. 3.in der Viewpager-Aktivität, in der Sie die Schnittstellenmethode Call viewPager.setCurrentItem(pos); oder pos + x

implementiert haben