안드로이드 7일차

ParkJinYoung·2022년 10월 17일

갔다오는 Intent

package com.jyp.ex1017;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.constraintlayout.widget.ConstraintLayout;

import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {
    Button btn_next;
    final int REQUEST_BACKGROUND=1;
    ConstraintLayout background;

    //final
    //1. 변수 앞에 있으면? => 상수
    //2. 메소드 앞에 있으면? => 오버라이딩(재정의) 불가능
    //3. 클래스 앞에 있으면? => 상속(extend) 불가능

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

        btn_next = findViewById(R.id.btn_next);
        btn_next.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //버튼누르면 Sub로 이동
                Intent intent_main=new Intent(MainActivity.this,
                        SubActivity.class);

                //startActivity(intent_main)는 단방향
                //가긴 가는데 결과를 위해서 간다.
                // 두번째 매개변수 => 갔다왔을때 실행된것을 구분하기위한 코드값
                startActivityForResult(intent_main, REQUEST_BACKGROUND);
            }
        });
    }

    //값을 가지고 돌아왔을때 실행되는 메소드 정의
    //메소드 오버라이딩(재정의)=>onActivityResult
    //단축키 Alt + Insert => Override Method => 찾기
    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == RESULT_OK) {// 처리가 잘 되었다면
            if (requestCode == REQUEST_BACKGROUND) {// 무엇때문에 갔다 온건지
                String result = data.getStringExtra("color");
                background = findViewById(R.id.background);
                if (result.equals("Red")){
                    background.setBackgroundColor(Color.RED);
                }else if(result.equals("Green")){
                    background.setBackgroundColor(Color.GREEN);

                }else if(result.equals("Blue")){
                    background.setBackgroundColor(Color.BLUE);

                }
            }
        }
    }
}


package com.jyp.ex1017;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.Toast;

public class SubActivity extends AppCompatActivity {
    ListView list;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sub);
        //List View ==>entries
        //==>res/values/string.xml
        list = findViewById(R.id.list);
        //Main에서 버튼을 눌러서 Sub로 이동해오면
        //Sub에 있는 리스트뷰에 Event를 걸어준다
        //항목이 선택된걸 감지하는 Event

        list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                // 1. 클릭이 일어난 ListView 자체
                // 2. 클릭이 일어난 항목 View(Text View)
                // 3. 클릭이 일어난 항목의 Index
                // 4. 클릭이 일어난 항목의 id값 => X(잘안씀)

                //클릭했을때 항목의 글자를 Toast메세지로 띄워주기
//                if(position==0){
//                    Toast toast = Toast.makeText(getApplicationContext(), "Red", Toast.LENGTH_SHORT);
//                    toast.show();
//                }else if(position==1){
//                    Toast toast = Toast.makeText(getApplicationContext(), "Green", Toast.LENGTH_SHORT);
//                    toast.show();
//                }else if(position==2){
//                    Toast toast = Toast.makeText(getApplicationContext(), "Blue", Toast.LENGTH_SHORT);
//                    toast.show();
//                }

                //어떤 색을 선택했는지 Main에 값을 돌려주고 싶다
                //Intent를 사용해서 돌려준다.
                Intent intent = new Intent();
                switch (position){
                    case 0:
                        Toast.makeText(getApplicationContext(), "Red", Toast.LENGTH_SHORT).show();
                        intent.putExtra("color","Red");
                        break;
                    case 1:
                        Toast.makeText(getApplicationContext(), "Green", Toast.LENGTH_SHORT).show();
                        intent.putExtra("color","Green");
                        break;
                    case 2:
                        Toast.makeText(getApplicationContext(), "Blue", Toast.LENGTH_SHORT).show();
                        intent.putExtra("color","Blue");
                        break;
                }

                //반송하기
                setResult(RESULT_OK, intent);
                finish();
            }
        });

    }
}
profile
꾸준히

0개의 댓글