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

Я строю калькулятор GPA с помощью android studio

Что у меня есть:

У меня есть текст редактирования для единицы кредита и другой для оценки с разными идентификаторами

У меня есть метод для кнопки

приложение работает нормально, но когда я ввожу значение для кредитного блока и значение для оценки, ничего не происходит, когда я нажимаю кнопку.

вот мой xml

редактировать текст для кредитной единицы

<EditText
        android:id="@+id/txt_credits"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="6dp"
        android:layout_weight="1"
        android:background="@drawable/border"
        android:ems="4"
        android:gravity="center"
        android:hint="e.g. 0, 2, 3 "
        android:inputType="textPersonName|number|numberDecimal" />

редактировать текст для оценки

        EditText
        android:id="@+id/txt_grade"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="6dp"
        android:layout_weight="1"
        android:background="@drawable/border"
        android:ems="4"
        android:gravity="center"
        android:hint="e.g. A, B, C "
        android:inputType="textCapCharacters"
        android:paddingLeft="16dp" />

кнопка

<Button
            android:id="@+id/button2"
            android:layout_marginBottom="6dp"
            android:textAllCaps="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="16dp"
            android:layout_marginTop="32dp"
            android:onClick="calcGpa"
            android:text="get gpa"
           android:textAppearance="@style/Base.TextAppearance.AppCompat.Large"/>

вот моя ява

  protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mLayout = (LinearLayout) findViewById(R.id.linearLayout);
        mEditCreditText = (EditText) findViewById(R.id.txt_credits);
        mEditGradeText =  (EditText) findViewById(R.id.txt_grade);
        mButton = (Button) findViewById(R.id.button2);
        mButton.setOnClickListener(onClick());

    }
    private View.OnClickListener onClick() {
        return new View.OnClickListener() {
            @Override
            public void onClick(View v) {



                allCredits.add(mEditCreditText);
                allGrades.add(mEditGradeText);
            }
        };
    }




    public int pointPerSubj(int number,String grade) {
        int point;

        if (grade.equalsIgnoreCase("A"))
            point = 5;
        else if (grade.equalsIgnoreCase("B"))
            point = 4;
        else if (grade.equalsIgnoreCase("C"))
            point = 3;
        else if (grade.equalsIgnoreCase("D"))
            point = 2;
        else
            point = 0;

        int perSubjectPoint = number * point;
        return perSubjectPoint;
    }

    public void calcGpa (View v) {

         gpa = perSubjectPoint/totalCredits;

        display(gpa);
        }


    // display method
    private void display(int number) {
        TextView gpaTextView = (TextView) findViewById(R.id.gpa_text_view);
        gpaTextView.setText("" + (number));
    }

    }

1 Ответ

0 голосов
/ 24 мая 2018

У меня недостаточно репутации, чтобы комментировать, иначе я бы попросил больше кода в комментариях.

Ваш onClickListener добавляет ваши EditTexts к тому, что я предполагаю ArrayLists of EditTexts: allCredits и allGrades

Во-первых, если вы хотите вставить текст, то это должны быть ArrayLists из строк, и вы должны сделать:

allCredits.add(mEditCreditText.getText().toString());
allGrades.add(mEditGradeText.getText().toString());

Кроме того, ваш код не указывает, где вызываются какие-либо из ваших методов calcGpa и pointPerSubj .

Я считаю, что вы просто не вызываетенеобходимые методы для отображения чего-либо.

...