ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Android 실습 (11)
    Android 2022. 7. 19. 12:04

     

    < MainActivity2.java >

    package com.example.ex_0719;
    
    import androidx.annotation.NonNull;
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.view.View;
    import android.widget.Button;
    import android.widget.TextView;
    
    public class MainActivity2 extends AppCompatActivity {
    
        TextView txt1, txt2;
        Button btn1, btn2;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main2);
    
            txt1 = findViewById(R.id.txt1);
            txt2 = findViewById(R.id.txt2);
            btn1 = findViewById(R.id.btn1);
            btn2 = findViewById(R.id.btn2);
    
            btn1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    // 사용하고 싶은 Thread를 호출!
    
                    MyThread thread = new MyThread(txt1);
                    thread.start();
                }
            });
    
            btn2.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    MyThread thread = new MyThread(txt2);
                    thread.start();
                }
            });
    
        }
    
        // Thread 생성
        class MyThread extends Thread{
            // 생성자 메소드를 통해 받아온 view를 담아줄 수 있는 필드 생성
            TextView txt;
    
            // 원하는 view를 생성자 메소드를 통하여 가져오기!
            public MyThread(View view){
                this.txt = (TextView) view;
            }
    
            @Override
            public void run() {
                for (int i = 1; i <= 10; i++){
    
                    // Handler 호출하여 UI 변경 요청!
                    Message msg = new Message();
                    msg.arg1 = i;
                    msg.obj = txt;
    
                    handler.sendMessage(msg);
    
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
    
                }
            }
        }
    
        Handler handler = new Handler(){
            @Override
            public void handleMessage(@NonNull Message msg) {
                int num = msg.arg1;
                TextView txt = (TextView) msg.obj;
    
                txt.setText(String.valueOf(num));
    
            }
        };
    
    }

     

    버튼을 누르면 왼쪽과 오른쪽이 각각 다르게 카운트됩니다

    'Android' 카테고리의 다른 글

    Android 실습 (12)  (0) 2022.07.20
    Android 이론 (4)  (0) 2022.07.20
    Android 실습 (10)  (0) 2022.07.19
    Android 실습 (9)  (0) 2022.07.18
    Android 실습 (8)  (0) 2022.07.15

    댓글

Designed by Tistory.