2017-10-24 7 views
-1

Wie String[] von MainActivityWie String Array von ActivityMain passieren fragmentieren

example.add(new Fragment1(new String[]{"answer 1", "answer 2", "answer 3"})); 
example.add(new Fragment1(new String[]{"answer 4", "answer 5", "answer 6"})); 

dieser Fragment passieren und dynamisch (auf Swipe) funktioniert

public class Fragment1 extends Fragment { 

    String stringValue; 
    int imagesResId; 
    TextView text; 
    String[] rbData; 

    public Fragment1() { 
    } 

    public Fragment1(String str, int imageView, String[] rb) { 
     this.stringValue = str; 
     this.imagesResId = imageView; 
     this.rbData = rb; 
    } 

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

     View view = inflater.inflate(R.layout.fragment1, container, false); 
     text = view.findViewById(R.id.textView); 
     ImageView imageResId = view.findViewById(image); 

     text.setText(stringValue); 
     imageResId.setImageResource(imagesResId); 

     return view; 
    } 
} 

Antwort

0

weitergeben müssen:

putStringArray("my_array", myArray); 

Um abzurufen:

getArguments().getStringArray("my_array"); 

In Ihrem Fragmente:

public static Fragment1 newInstance(String[] array) { 
    Fragment1 fragment = new Fragment1(); 
    Bundle args = new Bundle(); 
    args.putStringArray("my_array", array); 
    fragment.setArguments(args); 
    return fragment; 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    if (getArguments() != null) { 
     String[] myArray = getArguments().getStringArray("my_array"); 
    } 
} 

das Fragment zu starten:

Fragment1 frag = Fragment1.newInstance(myArray); 
FragmentTransaction ft = getFragmentManager().beginTransaction(); 
//..... 
+0

Danke. Ich werde es versuchen. Aber gibt es, anders als 'bundle', andere Möglichkeiten,' StringArray' direkt vom 'Activity'- und' Fragment1'-Konstruktor an die 'onCreateView'-Methode zu übergeben? Wie ich es mit z.B. 'Text' in meinem obigen Beitrag? Die Codezeile von 'MainActivity' ist' example.add (neues Fragment1 ("text1")); ' – MissAndroid

+0

@MissAndroid Verwenden von' Bundle', um Daten von 'Activity' nach' Fragment' oder 'Fragment' nach' Fragment' zu übertragen Das ist wahrscheinlich der Weg. Je nach Anwendungsfall können Sie 'interface' verwenden oder einige Bibliotheken von Drittanbietern wie Event-Bus usw. verwenden, wenn Sie' Bundle' nicht verwenden möchten. –

+0

Ich meine 'bundle' ist in Ordnung, aber ich frage mich, ob ich" text "aus dieser Zeile" example.add "(neues Fragment1 (" text1 "))" 'in' MainActivity' nach 'Fragment1' mit Konstruktor mit Argumenten übergeben kann Vielleicht gibt es eine Möglichkeit, das Gleiche mit 'String [] answer1..etc' zu tun. – MissAndroid

Verwandte Themen