检索值在哪里出错?

时间:2018-10-06 06:49:55

标签: java android android-studio

这是我的按钮代码。每当我单击此按钮时,应用程序都会关闭!我无法理解为什么会发生这种情况?

在我的代码中,我试图检查动态创建的EditText字段中的值是否已存储在变量数组values []和bValues []中; 我在这里寻找有关如何从动态edittext字段中检索值的许多答案。我是根据我的理解提出的。

谁能告诉我我要去哪里错了?正确的演示代码会有所帮助!

 public class MainActivity extends AppCompatActivity {

    private static int a;

    private static EditText ainput;
    private static Button btn, set;

    TextView equal_sign;
    private static TableLayout tableLayout;
    private static LinearLayout bMatrix;

    List<EditText> allEds = new ArrayList<EditText>(a*a);
    double[] values = new double[(allEds.size())];

    List<EditText> bMatrixValues = new ArrayList<EditText>(a);
    double[] bValues = new double[bMatrixValues.size()];

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


        ainput = (EditText) findViewById(R.id.a);

        btn = (Button) findViewById(R.id.btn);
        set = (Button)findViewById(R.id.set);

        tableLayout = (TableLayout) findViewById(R.id.table1);

        equal_sign = (TextView) findViewById(R.id.equal_sign);

        bMatrix = (LinearLayout) findViewById(R.id.bMatrix);

        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                a = Integer.parseInt(ainput.getText().toString());

                tableLayout.removeAllViews();
                createMatrix();

            }
        });

        set.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                for (int i = 0; i < allEds.size(); i++){
                    values[i] = Double.parseDouble(allEds.get(i).getText().toString());
                }

                for (int j = 0 ; j < bMatrixValues.size(); j++){
                    bValues[j] = Double.parseDouble(bMatrixValues.get(j).getText().toString());
                }

                if (allEds.size() > 0 && bMatrixValues.size() > 0){
                    Toast.makeText(MainActivity.this, "Main Matrix Values inserted!", Toast.LENGTH_SHORT).show();
                }else{
                    Toast.makeText(MainActivity.this, "Insertion failed!", Toast.LENGTH_SHORT).show();
                }
            }
        });



    }


    private void createMatrix() {

        int p = 1;

        for (int i = 0; i < a; i++) {
            TableRow row = new TableRow(this);
            TableRow.LayoutParams lp = new 
              TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, 
              TableRow.LayoutParams.WRAP_CONTENT);
            lp.gravity = Gravity.CENTER;
            row.setLayoutParams(lp);

            EditText magicField;
            for (int j = 0; j < a; j++) {
                magicField = new EditText(MainActivity.this);
                allEds.add(magicField);
                magicField.setId((p));
                magicField.setHint("et-" + (Integer.toString(p)));
                magicField.setGravity(Gravity.CENTER);
                magicField.setWidth(100);
                row.addView(magicField, j);


                p++;
            }
            tableLayout.addView(row, i);
        }


        bMatrix.removeAllViews();
        equal_sign.setText("=");
        equal_sign.setTextSize(30);
        createBMatrix();

    }


    private void createBMatrix() {
        int id = (a * a) + 1;
        for (int s = 0; s < a; s++) {
            final EditText b = new EditText(this);
            bMatrixValues.add(b);
            b.setId(id);
            b.setHint("b-" + (Integer.toString(s + 1)));
            b.setGravity(Gravity.CENTER);
            b.setWidth(100);
            bMatrix.addView(b);

            id++;
        }
    }

}

这是输出屏幕!

outputScreen

可以很好地创建矩阵样式编辑文本字段。但是,当我为这些字段提供值并单击“设置值”按钮时,应用程序将关闭。

0 个答案:

没有答案