본문 바로가기

PROGRAM/Android

MyCalc App(2)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <EditText
        android:id="@+id/editTextNumberDecimal1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="bottom|right"
        android:layout_weight="1"
        android:hint="Input your Number"
        android:inputType="numberDecimal"
        android:textSize="20dp" />

    <EditText
        android:id="@+id/editTextNumberDecimal2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="bottom|right"
        android:layout_weight="1"
        android:hint="Input your Number"
        android:inputType="numberDecimal"
        android:textSize="20dp"/>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_weight="1">

        <Button
            android:id="@+id/btn_add"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:layout_marginLeft="1dp"
            android:layout_marginRight="1dp"

            android:text="+" />

        <Button
            android:id="@+id/btn_sub"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:layout_marginLeft="1dp"
            android:layout_marginRight="1dp"
            android:text="-" />

        <Button
            android:id="@+id/btn_mul"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:layout_marginLeft="1dp"
            android:layout_marginRight="1dp"
            android:text="*" />

        <Button
            android:id="@+id/btn_div"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:layout_marginLeft="1dp"
            android:layout_marginRight="1dp"
            android:text="/" />

        <Button
            android:id="@+id/btn_mod"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:layout_marginLeft="1dp"
            android:layout_marginRight="1dp"
            android:text="%" />
    </LinearLayout>

    <TextView
        android:id="@+id/tv_result"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="20"
        android:textSize="24dp"
        android:gravity="center_vertical|center_horizontal"
        android:text="Result" />

    <Button
        android:id="@+id/btn_clear"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="2dp"
        android:layout_marginRight="2dp"
        android:layout_weight="1"
        android:text="clear" />

</LinearLayout>

버튼이 여러개 일때 진행하는 자바 코드

public class MainActivity extends AppCompatActivity{

    Button[] btn_menu = null;

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

        btn_menu = new Button[6];
        int[] btn_id = {R.id.btn_add, R.id.btn_sub, R.id.btn_mul, R.id.btn_div, R.id.btn_mod, R.id.btn_clear};

        for(int i=0; i<6; i++){
            btn_menu[i] = findViewById(btn_id[i]);
            btn_menu[i].setOnClickListener(btnListener);
        }

    }
    View.OnClickListener btnListener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            for(int i=0; i<6; i++){
                if(v.getId() == btn_menu[i].getId()){
                    Toast.makeText(getApplicationContext(),String.format("%s",btn_menu[i].getId()),Toast.LENGTH_SHORT).show();
                }
            }
        }
    };

}

최종코드

public class MainActivity extends AppCompatActivity{

    EditText editTextNumberDecimal1;
    EditText editTextNumberDecimal2;
    TextView tv_result;
    String numString1="", numString2="";
    int numResult;
    Button[] btn_menu = null;

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

        editTextNumberDecimal1 = findViewById(R.id.editTextNumberDecimal1);
        editTextNumberDecimal2 = findViewById(R.id.editTextNumberDecimal2);
        tv_result = findViewById(R.id.tv_result);


        btn_menu = new Button[6];
        int[] btn_id = {R.id.btn_add, R.id.btn_sub, R.id.btn_mul, R.id.btn_div, R.id.btn_mod, R.id.btn_clear};
        for(int i=0; i<6; i++){
            btn_menu[i] = findViewById(btn_id[i]);
        }

        for (int i=0; i<6; i++) {
            btn_menu[i].setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    numString1 = editTextNumberDecimal1.getText().toString();
                    numString2 = editTextNumberDecimal2.getText().toString();
                    switch (v.getId()) {
                        case R.id.btn_clear:
                            editTextNumberDecimal1.setText("");
                            editTextNumberDecimal2.setText("");
                            tv_result.setText("Result");
                            break;
                        case R.id.btn_add:
                            if(!numString1.equals("") && !numString2.equals("")) {
                                numResult = Integer.parseInt(numString1) + Integer.parseInt(numString2);
                                tv_result.setText(Integer.toString(numResult));
                            }
                            else {
                                Toast.makeText(getApplicationContext(), "Input your Number1", Toast.LENGTH_SHORT).show();
                            }
                            break;
                        case R.id.btn_sub:
                            if(!numString1.equals("") && !numString2.equals("")) {
                                numResult = Integer.parseInt(numString1) - Integer.parseInt(numString2);
                                tv_result.setText(Integer.toString(numResult));
                            }
                            else {
                                Toast.makeText(getApplicationContext(), "Input your Number2", Toast.LENGTH_SHORT).show();
                            }
                            break;
                        case R.id.btn_mul:
                            if(!numString1.equals("") && !numString2.equals("")) {
                                numResult = Integer.parseInt(numString1) * Integer.parseInt(numString2);
                                tv_result.setText(Integer.toString(numResult));
                            }
                            else {
                                Toast.makeText(getApplicationContext(), "Input your Number3", Toast.LENGTH_SHORT).show();
                            }
                            break;
                        case R.id.btn_div:
                            if(!numString1.equals("") && !numString2.equals("")) {
                                numResult = Integer.parseInt(numString1) / Integer.parseInt(numString2);
                                tv_result.setText(Integer.toString(numResult));
                            }
                            else {
                                Toast.makeText(getApplicationContext(), "Input your Number4", Toast.LENGTH_SHORT).show();
                            }
                            break;
                        case R.id.btn_mod:
                            if(!numString1.equals("") && !numString2.equals("")) {
                                numResult = Integer.parseInt(numString1) % Integer.parseInt(numString2);
                                tv_result.setText(Integer.toString(numResult));
                            }
                            else {
                                Toast.makeText(getApplicationContext(), "Input your Number5", Toast.LENGTH_SHORT).show();
                            }
                            break;
                        default:
                            break;
                    }
                    editTextNumberDecimal1.setText("");
                    editTextNumberDecimal2.setText("");
                }
            });
        }

    }
}

최종코드2

public class MainActivity extends AppCompatActivity{

    EditText editTextNumberDecimal1;
    EditText editTextNumberDecimal2;
    TextView tv_result;
    String numString1="", numString2="";
    int numResult;
    Button[] btn_menu = null;

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

        editTextNumberDecimal1 = findViewById(R.id.editTextNumberDecimal1);
        editTextNumberDecimal2 = findViewById(R.id.editTextNumberDecimal2);
        tv_result = findViewById(R.id.tv_result);

        btn_menu = new Button[6];
        int[] btn_id = {R.id.btn_add, R.id.btn_sub, R.id.btn_mul, R.id.btn_div, R.id.btn_mod, R.id.btn_clear};

        for(int i=0; i<6; i++){
            btn_menu[i] = findViewById(btn_id[i]);
            btn_menu[i].setOnClickListener(btnListener);
        }

    }
    View.OnClickListener btnListener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            numString1 = editTextNumberDecimal1.getText().toString();
            numString2 = editTextNumberDecimal2.getText().toString();

            for(int i=0; i<6; i++){
                if(v.getId() == btn_menu[i].getId()){
                    switch (v.getId()) {
                        case R.id.btn_clear:
                            editTextNumberDecimal1.setText("");
                            editTextNumberDecimal2.setText("");
                            tv_result.setText("Result");
                            break;
                        case R.id.btn_add:
                            if(!numString1.equals("") && !numString2.equals("")) {
                                numResult = Integer.parseInt(numString1) + Integer.parseInt(numString2);
                                tv_result.setText(Integer.toString(numResult));
                            }
                            else {
                                Toast.makeText(getApplicationContext(), "Input your Number", Toast.LENGTH_SHORT).show();
                            }
                            break;
                        case R.id.btn_sub:
                            if(!numString1.equals("") && !numString2.equals("")) {
                                numResult = Integer.parseInt(numString1) - Integer.parseInt(numString2);
                                tv_result.setText(Integer.toString(numResult));
                            }
                            else {
                                Toast.makeText(getApplicationContext(), "Input your Number", Toast.LENGTH_SHORT).show();
                            }
                            break;
                        case R.id.btn_mul:
                            if(!numString1.equals("") && !numString2.equals("")) {
                                numResult = Integer.parseInt(numString1) * Integer.parseInt(numString2);
                                tv_result.setText(Integer.toString(numResult));
                            }
                            else {
                                Toast.makeText(getApplicationContext(), "Input your Number", Toast.LENGTH_SHORT).show();
                            }
                            break;
                        case R.id.btn_div:
                            if(!numString1.equals("") && !numString2.equals("")) {
                                numResult = Integer.parseInt(numString1) / Integer.parseInt(numString2);
                                tv_result.setText(Integer.toString(numResult));
                            }
                            else {
                                Toast.makeText(getApplicationContext(), "Input your Number", Toast.LENGTH_SHORT).show();
                            }
                            break;
                        case R.id.btn_mod:
                            if(!numString1.equals("") && !numString2.equals("")) {
                                numResult = Integer.parseInt(numString1) % Integer.parseInt(numString2);
                                tv_result.setText(Integer.toString(numResult));
                            }
                            else {
                                Toast.makeText(getApplicationContext(), "Input your Number", Toast.LENGTH_SHORT).show();
                            }
                            break;
                        default:
                            break;
                    }
                    editTextNumberDecimal1.setText("");
                    editTextNumberDecimal2.setText("");
                }
            }
        }
    };

}

OnCreate( )안에 Button.OnClickListener 구현

- Button.OnClickListener 아래에 findViewById( ) 및 SetOnClickListener( ) 가 있어야함

- SetOnClickListener( )가 공통으로 btnListener를 호출 

public class MainActivity extends AppCompatActivity{

    EditText editTextNumberDecimal1;
    EditText editTextNumberDecimal2;
    TextView tv_result;
    String numString1="", numString2="";
    int numResult;
    Button[] btn_menu = null;

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

        editTextNumberDecimal1 = findViewById(R.id.editTextNumberDecimal1);
        editTextNumberDecimal2 = findViewById(R.id.editTextNumberDecimal2);
        tv_result = findViewById(R.id.tv_result);

        Button.OnClickListener btnListener = new Button.OnClickListener() {
            @Override
            public void onClick(View v) {
                numString1 = editTextNumberDecimal1.getText().toString();
                numString2 = editTextNumberDecimal2.getText().toString();

                for(int i=0; i<6; i++){
                    if(v.getId() == btn_menu[i].getId()){
                        switch (v.getId()) {
                            case R.id.btn_clear:
                                editTextNumberDecimal1.setText("");
                                editTextNumberDecimal2.setText("");
                                tv_result.setText("Result");
                                break;
                            case R.id.btn_add:
                                if(!numString1.equals("") && !numString2.equals("")) {
                                    numResult = Integer.parseInt(numString1) + Integer.parseInt(numString2);
                                    tv_result.setText(Integer.toString(numResult));
                                }
                                else {
                                    Toast.makeText(getApplicationContext(), "Input your Number", Toast.LENGTH_SHORT).show();
                                }
                                break;
                            case R.id.btn_sub:
                                if(!numString1.equals("") && !numString2.equals("")) {
                                    numResult = Integer.parseInt(numString1) - Integer.parseInt(numString2);
                                    tv_result.setText(Integer.toString(numResult));
                                }
                                else {
                                    Toast.makeText(getApplicationContext(), "Input your Number", Toast.LENGTH_SHORT).show();
                                }
                                break;
                            case R.id.btn_mul:
                                if(!numString1.equals("") && !numString2.equals("")) {
                                    numResult = Integer.parseInt(numString1) * Integer.parseInt(numString2);
                                    tv_result.setText(Integer.toString(numResult));
                                }
                                else {
                                    Toast.makeText(getApplicationContext(), "Input your Number", Toast.LENGTH_SHORT).show();
                                }
                                break;
                            case R.id.btn_div:
                                if(!numString1.equals("") && !numString2.equals("")) {
                                    numResult = Integer.parseInt(numString1) / Integer.parseInt(numString2);
                                    tv_result.setText(Integer.toString(numResult));
                                }
                                else {
                                    Toast.makeText(getApplicationContext(), "Input your Number", Toast.LENGTH_SHORT).show();
                                }
                                break;
                            case R.id.btn_mod:
                                if(!numString1.equals("") && !numString2.equals("")) {
                                    numResult = Integer.parseInt(numString1) % Integer.parseInt(numString2);
                                    tv_result.setText(Integer.toString(numResult));
                                }
                                else {
                                    Toast.makeText(getApplicationContext(), "Input your Number", Toast.LENGTH_SHORT).show();
                                }
                                break;
                            default:
                                break;
                        }
                        editTextNumberDecimal1.setText("");
                        editTextNumberDecimal2.setText("");
                    }
                }
            }
        };

        btn_menu = new Button[6];
        int[] btn_id = {R.id.btn_add, R.id.btn_sub, R.id.btn_mul, R.id.btn_div, R.id.btn_mod, R.id.btn_clear};
        for(int i=0; i<6; i++){
            btn_menu[i] = findViewById(btn_id[i]);
            btn_menu[i].setOnClickListener(btnListener);
        }
    }
}

'PROGRAM > Android' 카테고리의 다른 글

ndk-bundle did not have a source.properties file  (1) 2021.05.17
안드로이드스튜디오 Toast 메시지 안뜰 때  (0) 2021.04.23
myCalc App (1)  (0) 2021.04.20
EditText, TextView, Button and Toast  (0) 2021.04.20
MyAlarm  (0) 2020.10.27