Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 向UI动态添加元素数组_Android_Arrays_Android Layout_Dynamic - Fatal编程技术网

Android 向UI动态添加元素数组

Android 向UI动态添加元素数组,android,arrays,android-layout,dynamic,Android,Arrays,Android Layout,Dynamic,我正在尝试向LinearLayout UI添加元素,该UI已在片段的onCreateView()方法中成功扩展 下面是onActivityCreated()方法,我试图在其中向UI添加更多元素 UI为体积计算提供输入,但我不知道在运行时计算体积需要多少维度。尺寸的数量由我的体积计算类根据calcId提供 调试时,只要我尝试在dimHLayouts[dimNumber](例如dimHLayouts[dimNumber].setId(100+dimNumber);)上设置任何内容,应用程序就会在fo

我正在尝试向LinearLayout UI添加元素,该UI已在片段的onCreateView()方法中成功扩展

下面是onActivityCreated()方法,我试图在其中向UI添加更多元素

UI为体积计算提供输入,但我不知道在运行时计算体积需要多少维度。尺寸的数量由我的体积计算类根据calcId提供

调试时,只要我尝试在dimHLayouts[dimNumber](例如dimHLayouts[dimNumber].setId(100+dimNumber);)上设置任何内容,应用程序就会在for循环中崩溃。我已尝试交换我首先设置的属性。无论我首先尝试设置哪个属性,只要我尝试设置属性,就会发生此崩溃

我还使用了android.util.Log工具,插入了一吨日志,试图看看发生了什么,但我仍然不知所措,因为到那时为止,一切似乎都在按预期进行。任何帮助都将不胜感激

@Override
public void onActivityCreated(Bundle savedInstanceState) {

    // Get the volume Calculation Type from the bundle passed to this fragment
    Bundle bundle = this.getArguments();
    int calcId = bundle.getInt("CalcType");

    // Create a calculation object
    VolumeCalculation calc = new VolumeCalculation(ApplicationContextProvider.getContext());
    int calcDimensionCount = calc.getCalcDimensionCount(calcId);

    // Get the root LinearLayout of the inflated UI
    LinearLayout inputUILayout = (LinearLayout)view.findViewById(R.id.layout_input);

    // Create array of new LinearLayout objects
    LinearLayout[] dimHLayouts = new LinearLayout[calc.getCalcDimensionCount(calcId)];
    LinearLayout.LayoutParams lpDimHLayouts = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);

    // Create array of new TextView objects
    TextView[] dimTextViews = new TextView[calc.getCalcDimensionCount(calcId)];
    LayoutParams lpDimTextViews = new LinearLayout.LayoutParams(0, LayoutParams.WRAP_CONTENT, 1f);

    for(int dimNumber=0; dimNumber<calcDimensionCount; dimNumber++) {

        // Setup the horizontal linear layout for the dimension
        dimHLayouts[dimNumber].setId(100 + dimNumber);
        dimHLayouts[dimNumber].setOrientation(android.widget.LinearLayout.HORIZONTAL);
        dimHLayouts[dimNumber].setLayoutParams(lpDimHLayouts);

        // Setup the dimension label TextView
        dimTextViews[dimNumber].setId(150 + dimNumber);
        dimTextViews[dimNumber].setLayoutParams(lpDimTextViews);
        dimTextViews[dimNumber].setGravity(Gravity.RIGHT);
        dimTextViews[dimNumber].setText(calc.getDimLabel(calcId, dimNumber));

        // Add TextView to LinearLayout
        dimHLayouts[dimNumber].addView(dimTextViews[dimNumber]);

        // To Do: Setup an EditText and add it to the dimension LinearLayout

        // Add dimension LinearLayout to the UI  
        inputUILayout.addView(dimHLayouts[dimNumber]);
    }

    super.onActivityCreated(savedInstanceState);
}
@覆盖
已创建ActivityState上的公共无效(Bundle savedInstanceState){
//从传递到此片段的包中获取体积计算类型
Bundle=this.getArguments();
int calcId=bundle.getInt(“CalcType”);
//创建计算对象
VolumeCalculation calc=新的VolumeCalculation(ApplicationContextProvider.getContext());
int calcDimensionCount=calc.getCalcDimensionCount(calcId);
//从膨胀的UI中获取根线性布局
LinearLayout inputUILayout=(LinearLayout)视图.findViewById(R.id.layout\u输入);
//创建新LinearLayout对象的数组
LinearLayout[]dimHLayouts=新的LinearLayout[calc.getCalcDimensionCount(calcId)];
LinearLayout.LayoutParams lpDimHLayouts=新的LinearLayout.LayoutParams(LayoutParams.MATCH\u父级,LayoutParams.WRAP\u内容);
//创建新TextView对象的数组
TextView[]dimTextViews=新的TextView[calc.getCalcDimensionCount(calcId)];
LayoutParams lpDimTextViews=新的LinearLayout.LayoutParams(0,LayoutParams.WRAP_内容,1f);

对于(int dimNumber=0;dimNumber我有一个问题的解决方案(感谢Boris Mocialov的帮助)

新的UI组件数组已实例化,但数组的各个元素未初始化

我更改了for循环,如下所示,以初始化每个元素,例如
DIMHLayout[dimNumber]=newlinearlayout(getActivity());
它现在工作正常

    for(int dimNumber=0; dimNumber<calcDimensionCount; dimNumber++) {

        // Setup the horizontal linear layout for the dimension
        dimHLayouts[dimNumber] = new LinearLayout(getActivity());
        dimHLayouts[dimNumber].setOrientation(android.widget.LinearLayout.HORIZONTAL);
        dimHLayouts[dimNumber].setLayoutParams(lpDimHLayouts);

        // Setup the dimension label TextView
        dimTextViews[dimNumber] = new TextView(getActivity());
        textViewIds[dimNumber] = generateViewId();
        dimTextViews[dimNumber].setId(textViewIds[dimNumber]);
        dimTextViews[dimNumber].setLayoutParams(lpDimTextViews);
        dimTextViews[dimNumber].setGravity(Gravity.RIGHT);
        dimTextViews[dimNumber].setTextAppearance(getActivity(), android.R.attr.textAppearanceMedium);
        dimTextViews[dimNumber].setText(calc.getDimLabel(calcId, dimNumber));

        // Setup the dimension label EditText
        dimEditTexts[dimNumber] = new EditText(getActivity());
        editTextIds[dimNumber] = generateViewId();
        dimEditTexts[dimNumber].setId(editTextIds[dimNumber]);
        dimEditTexts[dimNumber].setLayoutParams(lpDimEditTexts);
        dimEditTexts[dimNumber].setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL | InputType.TYPE_CLASS_NUMBER);
        dimEditTexts[dimNumber].setTextAppearance(getActivity(), android.R.attr.textAppearanceMediumInverse);


        // Add TextView and EditText to LinearLayout
        dimHLayouts[dimNumber].addView(dimTextViews[dimNumber]);
        dimHLayouts[dimNumber].addView(dimEditTexts[dimNumber]);


        // Add dimension LinearLayout to the UI  
        inputUILayout.addView(dimHLayouts[dimNumber]);
    }

for(int-dimNumber=0;dimNumberwhat是崩溃报告?LogCat说,“线程以未捕获的异常退出”是的,它总是这么说。(她是这么说的)。稍微高一点,什么类型的异常,在代码中的什么位置。例如--classcastexception我没有看到像“由……引起的”这样明显的东西顺便说一句,谢谢你花时间看我的问题。是的,你的Fragment_Input.java第100行有NullPointerException