(1)
2025-04-01 01:12:26

예제1)  버튼을 누르면 EditText의 Text가 변경되게 하기

Java 소스 코드

package com.inhatc.mobile_programming_practice;

import android.graphics.Color;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TabHost;
import android.widget.TextView;

import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;

public class MainActivity extends AppCompatActivity {

    private Button btnCall;
    EditText ObjET;

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

        btnCall = (Button)findViewById(R.id.button);
        ObjET = (EditText)findViewById(R.id.editTextText);

        btnCall.setOnClickListener(new View.OnClickListener() {
            @Override
            public void  onClick(View view)
            {
                ObjET.setText("통화중...");
            }
        });

        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
            Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
            return insets;
        });
    }

}

 

주요 표인트

버튼에 이벤트를 달아 주기

Button.setOnClickListener(View.OnClickListener()

{

    @Override

    public void onClick(View view) {

        ....

    }

});

 

 

예제 2)

 

Java 소스코드

package com.inhatc.mobile_programming_practice;

import android.content.Intent;
import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TabHost;
import android.widget.TextView;

import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

    private Button btnCall;
    EditText ObjET;

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

        btnCall = (Button)findViewById(R.id.button);
        ObjET = (EditText)findViewById(R.id.editTextText);
        btnCall.setOnClickListener(this);

        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
            Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
            return insets;
        });
    }
    @Override
    public void onClick(View view)
    {
        String strPhoneNo = ObjET.getText().toString();
        if(view == btnCall)
        {
            if(!strPhoneNo.isEmpty())
            {
                Intent dialIntent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel: " + ObjET.getText()));
                dialIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(dialIntent);
            }
            else{
                ObjET.setText("Input Phone Number...");
            }
        }
    }
}

결과)

 

핵심 포인트

public class MainActiviry extends AppCompatActivity  implements View.OnClickListener

부모 클래스로부터 메소드를 재정의 하기위한 implements

 

Intent dialIntent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel: ") + EditText.getText())

uri 전환 시 콜론(:)을 넣지 않으면 양식에 맞지 않아 에러가 난다!

 

dialIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

startActivity(dialIntent)

 

예제 3) 바로 전화로 연결되게 java코드 변경하기

ACTION_DIAL -> ACTION_CALL

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

    <uses-feature
        android:name="android.hardware.telephony"
        android:required="false" />
    <uses-permission android:name="android.permission.CALL_PHONE"/>

    <application
        android:allowBackup="true"
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:fullBackupContent="@xml/backup_rules"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.Mobile_Programming_Practice"
        tools:targetApi="31">
        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

결과)

핵심 포인트)

Intent 형 dialIntent를 DIAL_CALL로 변경

AndroidManifast.xml 에 

<uses-features

android:name="android.hardware.telephony"

android:require="false />

<uses-permission android:name="android.permission.CALL_PHONE"/>

추가 후

앱 설정에서 권한 부여

 

 

예제 4)

java 소스 코드)

package com.inhatc.mobile_programming_practice;

import android.content.Intent;
import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.TabHost;
import android.widget.TextView;

import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;

public class MainActivity extends AppCompatActivity implements View.OnClickListener{
    TextView objTV;
    View objLayout;
    RadioButton rdoScreenSet;
    RadioButton rdoScreenReset;
    CheckBox chkColor_R;
    CheckBox chkColor_G;
    CheckBox chkColor_B;
    int bkColor = 0xFFFFFFFF;
    String strData;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.activity_main);
        objTV = (TextView)findViewById(R.id.textView);
        objLayout = findViewById(R.id.main);

        rdoScreenSet = (RadioButton)findViewById(R.id.radioButton1);
        rdoScreenReset = (RadioButton)findViewById(R.id.radioButton2);
        rdoScreenSet.setOnClickListener(this);
        rdoScreenReset.setOnClickListener(this);

        chkColor_R = (CheckBox)findViewById(R.id.checkBox1);
        chkColor_G = (CheckBox)findViewById(R.id.checkBox2);
        chkColor_B = (CheckBox)findViewById(R.id.checkBox3);
        chkColor_R.setOnClickListener(this);
        chkColor_G.setOnClickListener(this);
        chkColor_B.setOnClickListener(this);

        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
            Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
            return insets;
        });
    }
    @Override
    public void onClick(View view)
    {
        bkColor = 0xFF000000;
        if (rdoScreenSet.isChecked())
        {
            strData = "Color Setting Mode : " + rdoScreenSet.getText().toString();
            if (chkColor_R.isChecked()) bkColor |= 0xFFFF0000;
            if (chkColor_G.isChecked()) bkColor |= 0xFF00FF00;
            if (chkColor_B.isChecked()) bkColor |= 0xFF0000FF;
        }
        else{
            strData = "Color Setting Mode : " + rdoScreenReset.getText().toString();
            chkColor_R.setChecked(false);
            chkColor_G.setChecked(false);
            chkColor_B.setChecked(false);
            if (chkColor_R.isPressed()||chkColor_G.isPressed()||chkColor_B.isPressed())
                strData = "Setting the color setting mode to Set.";
        }
        objLayout.setBackgroundColor(bkColor);
        objTV.setTextColor(Color.GRAY);
        objTV.setText(strData);
    }

}

 

결과) 

핵심 포인트

라디오 버튼과 체크박스 모두 isChecked()로 선택 여부를 확인할 수 있다!

setChecked() 로 선택의 가능 여부 또한 정할 수 있으며,

isPressed() 로 클릭되었는지 확인할 수 있다