Estoy intentando agregar botones de imagen mediante programación al fragmento que forma parte de un viewpager. Intenté diferentes códigos, pero no aparece ningún botón aunque Eclipse no devuelve ningún error.Agregar botones mediante programación a un fragmento
Encontré una pregunta similar here pero las respuestas no me ayudaron a hacer aparecer mis botones.
Aquí está mi código.
public class ViewPagerFragment extends Fragment {
private ViewPagerActivity mViewPagerActivity;
private String mId;
public ViewPagerFragment(String id) {
mId = id;
}
@Override
public void onAttach(Activity activity) {
if (activity instanceof ViewPagerActivity) {
mViewPagerActivity = (ViewPagerActivity)activity;
}
super.onAttach(activity);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment, container, false);
int[] image_array = {
R.drawable.elebutton,
R.drawable.right,
R.drawable.middle,
};
for (int i =0;i<image_array.length;i++){
ImageButton b1 = new ImageButton(getActivity());
b1.setId(100 + i);
b1.setImageResource(image_array[i]);
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
if (i > 0) {
lp.addRule(RelativeLayout.BELOW, b1.getId() - 1);
}
b1.setLayoutParams(lp);
ImageHolder ih = new ImageHolder(getActivity());
ih.addView(b1);
}
return v;
}
public class ImageHolder extends FrameLayout {
public ImageHolder(Context context) {
super(context);
initView(context);
}
public ImageHolder(Context context, AttributeSet attrs) {
super(context, attrs);
initView(context);
}
public ImageHolder(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
initView(context);
}
private void initView(Context context){
View.inflate(context, R.layout.fragment, this);
}
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
// TODO Auto-generated method stub
for(int i = 0 ; i < getChildCount() ; i++){
getChildAt(i).layout(l, t, r, b);
}
}
}