hey folks,
ich würde gerne ohne ein XML Layout die View eines Fragments dynamisch erstellen. Alle Beispiele die ich finde basieren auf einer Activity, ich habe bzw. brauche aber ein Fragment.
Probleme bereitet mir nur das ich mein LinearLayout nicht auf die View setzen kann ( Zeile 47 )...
der Rest funktioniert soweit. Deisem Fragment möchte ich später dann mehrere Parameter mitgeben, damit eine unterschiedliche Anzahl Buttons, Checkboxen und Textviews erstellt werden können.
Dieses Fragment wird erstellt, mit weiteren Fragmenten in einem Array abgelegt und später wird das Array bzw. die Fragmente darin, einem FragmentStatePagerAdapter hinzugefügt.
Es gibt auch mehrere FragmentStatePagerAdapter die über einen Spinner ausgewählt werden, aber das funktioniert bereits.
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.widget.LinearLayout;
import android.widget.TextView;
/**
* Created by SW on 04.03.2015.
*/
public class CustomDynamicFragment extends Fragment {
private FragmentActivity mContext;
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
mContext = getActivity();
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// This will create the LinearLayout
LinearLayout ll = new LinearLayout(mContext);
ll.setOrientation(LinearLayout.VERTICAL);
// Configuring the width and height of the linear layout.
LinearLayout.LayoutParams llLP = new LinearLayout.LayoutParams(
//android:layout_width="match_parent" an in xml
LinearLayout.LayoutParams.MATCH_PARENT,
//android:layout_height="wrap_content"
LinearLayout.LayoutParams.MATCH_PARENT);
ll.setLayoutParams(llLP);
TextView tv = new TextView(mContext);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
tv.setLayoutParams(lp);
//android:text="@string/c4r"
tv.setText("Hello android !");
//android:padding="@dimen/padding_medium"
tv.setPadding(8, 8, 8, 8);
ll.addView(tv);
setContentView(ll);
}
}
Alles anzeigen