片段中的按钮数组

时间:2014-08-13 16:14:00

标签: android arrays android-fragments

我是Android编程新手。我想动态添加一组按钮片段布局。

的活动:

public static class PlaceholderFragment extends Fragment {

        public PlaceholderFragment() {
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_list_dir,
                    container, false);

            LinearLayout linearLayout=new LinearLayout(getActivity());
            LayoutParams param=new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
            linearLayout.setLayoutParams(param);
            linearLayout.setOrientation(LinearLayout.VERTICAL);
            LayoutParams param2=new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

            Button dirButton[]=new Button[5];

            for(int i=0;i<5;i++)
            {
                dirButton[i].setLayoutParams(param2);
                linearLayout.addView(dirButton[i]);
            }


            ViewGroup vg=(ViewGroup)rootView;
            vg.addView(linearLayout);

            return rootView;
        }
    }

但是这会导致Null指针异常。但如果只使用一个按钮,则其工作方式如下:

Button dirButton=new Button(getActivity());

有没有办法实现按钮阵列?

2 个答案:

答案 0 :(得分:2)

Arrays不会那样工作。尝试这样的事情:

Button[] buttonArray = new Button[5]; 
for(int i = 0; i < 5; i++)
{
    buttonArray[i] = new Button(getActivity());
    buttonArray[i].setLayoutParams(params);
    linearLayout.addView(buttonArray[i]);
}

答案 1 :(得分:0)

public static class PlaceholderFragment extends Fragment {

    private static final String LOG_TAG = PlaceholderFragment.class.getSimpleName();

    public PlaceholderFragment() { }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.activity_my, container, false);

        LinearLayout linearLayout = new LinearLayout(getActivity());
        LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT);
        linearLayout.setLayoutParams(param);
        linearLayout.setOrientation(LinearLayout.VERTICAL);
        LinearLayout.LayoutParams param2 = new LinearLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);

        Button dirButton[] = new Button[5];

        for(int i = 0; i < 5; i++) {
            dirButton[i] = new Button(getActivity());
            dirButton[i].setLayoutParams(param2);
            linearLayout.addView(dirButton[i]);
        }


        ViewGroup vg = (ViewGroup) rootView;
        vg.addView(linearLayout);
        return rootView;
    }
}

如果有对象数组,则默认值为 null 。你忘了实际创建Button了。以下是您需要更改的部分:

dirButton[i] = new Button(getActivity());
dirButton[i].setLayoutParams(param2);