안드로이드스튜디오 editText

조회수 670회

+버튼을 누르면 3000이 올라가고 -버튼을 누르면 3000이 내려가요 버튼 누른거에 따라 총액이 계산되는 프로그램이에요ㅠㅠ 버튼 누르는게 번거로워서 에디트텍스트에 바로 숫자를 쳐도 계산되게끔 만들고 싶어요 예를 들면 10을 치면 총액이 30000원으로 계산되게끔용..

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    Button bh1, bh2, bca;
    TextView tr;
    EditText th;
    String sh;
    int nh;

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

        bh1 = (Button)findViewById(R.id.button);
        bh2 = (Button)findViewById(R.id.button2);
        bca = (Button)findViewById(R.id.button3);

        th=(EditText)findViewById(R.id.editText);


        tr=(TextView)findViewById(R.id.textView);

        nh = 0;

        bh1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                nh = nh + 1;
                th.setText(nh+"");

            }
        });
        bh2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                nh = nh - 1;
                th.setText(nh+"");

            }
        });
        bca.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                tr.setText("총액:"+(nh*3000)+"원");

            }
        });
    }
}

이런식으로 했는데 버튼은 계산이 되는데 에이트텍스트에 숫자를 치면 계산이 안돼요ㅠㅠ 제발 도와주세요ㅠㅠ

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 버튼을 누르면 반응하는 리스너를 추가한 것처럼 에딧텍스트에도 텍스트가 바뀔 때 마다 반응하는 리스너를 추가해주시면 될 것 같습니다.

    
    th.addTextChangedListener(new TextWatcher() {
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            // 입력되는 텍스트에 변화가 있을 때
            nh = parseInt(s.toString());
            tr.setText("총액:"+(nh*3000)+"원");
        }
    
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) { }
    
        @Override
        public void afterTextChanged(Editable arg0) { }
    });
    
    
    int parseInt(String numberString) {
        try {
            return Integer.parseInt(numberString);     
        } catch (NumberFormatException nfe) {
            return 0;
        }
    }
    
    • paserInt(s.toString()); 이 코드만 치면 에러가 나요ㅠㅠㅠ 똑같이 하는데도 왜그럴까요.. 밑에 parseInt이것두욤.. 다른 방법 없을까요ㅠㅠㅠㅠ 죄송해요ㅠㅠ 알 수 없는 사용자 2019.10.21 18:25
    • 아... 밑에 있는 parseInt 함수를 onCreate 함수 영역 밖에서, MainActivity 클래스 영역 안에서 적으셔야할겁니다. 김은기 2019.10.22 12:59
    • paserInt <= 이부분 오타냈었네요. int parseInt(String numberString) 이 함수를 정의하고 해당 함수를 사용하는겁니다. 답변은 수정하겠습니다 김은기 2019.10.22 12:59

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)