Где я иду неправильно при получении значений? - PullRequest
0 голосов
/ 06 октября 2018

Это мой код для кнопки.Всякий раз, когда я нажимаю на это, приложение закрывается! Я не могу понять, почему это происходит?

В моем коде я пытаюсь проверить, хранятся ли значения из динамически созданного поля EditText в значениях моего массива переменных []и 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

Текстовое поле редактирования в матричном стиле создается красиво.Но когда я даю значения этим полям и нажимаю кнопку «Установить значение», приложение закрывается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...