2016-06-27 7 views
1

Was ich die Fragmente Es ist verwenden können also ArrayList<String> von Aktivität sendet zu ListFragmentWie eine Arraylist von Aktivität zu einem Fragment passieren

zu tun, ich versuche, in einem TableLayout

nicht Um ListFragment verwenden zu können, kann ich jede Art von Fragmenten verwenden, aber ich versuche, die Idee zu verstehen.

Hier ist mein MainActivity:

FragmentTransaction fragmentTransaction; 

ArrayList<String> namesArray = new ArrayList<>(); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    namesArray.add("Android"); 
    namesArray.add("Iphone"); 
    namesArray.add("Windows Phone"); 

    Bundle bundle = new Bundle(); 
    bundle.putStringArrayList("valuesArray", namesArray); 
    namesFragment myFragment = new namesFragment(); 
    myFragment.setArguments(bundle); 

    fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
    fragmentTransaction.add(R.id.main_container, new namesFragment()); 
    fragmentTransaction.commit(); 

} 

Mein ListFragment:

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 

    ArrayList<String> values = getArguments().getStringArrayList("valuesArray"); 

    ArrayAdapter<String> adapter = new ArrayAdapter<>(getActivity(), android.R.layout.simple_list_item_1, values); 

    setListAdapter(adapter); 
} 

ich viel gesucht haben, aber ich habe nichts nützlich finden, und dieser Code oben gibt ich Unfortunately app has stopped

Also wie kann ich so etwas erreichen?

+1

Beitrag der logcat Fehler bitte –

+1

wie _Juan_ erwähnt, sollten Sie immer Ihre logcat Fehlermeldung hinterlassen, wenn Sie einen Absturz wie diese zu erhalten, damit wir fi leichter herauszufinden, was den Absturz verursacht. Außerdem erwähnen Sie "_And wie die ArrayList im Fragment als ListView_ angezeigt wird" - dies sollte als separate Frage veröffentlicht werden. –

Antwort

6

Sie Instanziieren Ihr Fragment zweimal: D

Gerade Änderung u'r Code:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    namesArray.add("Android"); 
    namesArray.add("Iphone"); 
    namesArray.add("Windows Phone"); 
    Bundle bundle = new Bundle(); 
    bundle.putStringArrayList("valuesArray", namesArray); 
    namesFragment myFragment = new namesFragment(); 
    myFragment.setArguments(bundle); 
    fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
    fragmentTransaction.add(R.id.main_container, myFragment); 
    fragmentTransaction.commit(); 
} 
+0

Vielen Dank Andre ich schätze deine Hilfe :) –

-2

nicht die Antwort, aber Sie können vermeiden, indem Sie ersetzen letzten drei Zeilen mit diesem ein Fragment Transaktions Objekt erstellen

getSupportFragmentManager() 
.beginTransaction() 
.add(R.id.main_container, new namesFragment()) 
.commit(); 
Verwandte Themen