본문 바로가기
Android

Intent 사용하기

by noddu 2021. 3. 22.
728x90
반응형

Activity - 화면구성 ( xml , java )

Service - 화면이 없고 백그라운드에서 계속 동작 ( 스트리밍 , 알람, 알림 )

Broadcast Receiver - 방송수신자 - 하드웨어에서 일어나는 모든 이벤트 감지 

Content Provider - 정보제공자 - 다른App으로 현대 App의 정보를 전달

 

 

 

 

● Intent

 - 화면 전환할때 사용

 - 무언가 기능을 실행시킬때

 - 하나의 액티비티가 다른 액티비티를 실행시킬 수 있는 메시지 시스템

 

 

 

 

 

 

◆네이버 바로가기 만들기

this - 지금클래스인 MainActivity( 클릭리스너 객체가 들어갈 수 있음)

Listener안에 this말고 바로 new View.OnClickListener() 객체를 넣어도 가능

 

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

    Button btn_naver;

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

        // 버튼에 클릭리스너 달기
        btn_naver = findViewById(R.id.btn_naver);

        btn_naver.setOnClickListener(this); //this - 지금클래스인 MainActivity( 클릭리스너 객체 )
    }

    @Override
    public void onClick(View v) {
        // 1.Intent 객체 생성하기 (액션, 데이터)
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://naver.com"));
        // 2. Intent 실행시키기
        startActivity(intent);
    }
}

 

◆전화 다이얼 화면 만들기 ,  전화걸기

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    Button btn_naver;
    Button btn_dial;
    Button btn_call;

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

        // 버튼에 클릭리스너 달기
        btn_naver = findViewById(R.id.btn_naver);
        btn_naver.setOnClickListener(this); //this - 지금클래스인 MainActivity( 클릭리스너 객체 )

        btn_dial = findViewById(R.id.btn_dial);

        btn_call = findViewById(R.id.btn_call);

        btn_dial.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:01024027267"));
                startActivity(intent);
            }
        });

        btn_call.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:01024027267"));
                // 현재 권한이 부여되어 있는지 검사
                if (ActivityCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.CALL_PHONE)
                        != PackageManager.PERMISSION_GRANTED) {


                    ActivityCompat.requestPermissions(MainActivity.this,
                            new String[]{Manifest.permission.CALL_PHONE}, 0);
                    return;
                }
                startActivity(intent);
            }
        });

    }

    @Override
    public void onClick(View v) {
        // 1.Intent 객체 생성하기 (액션, 데이터)
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://naver.com"));
        // 2. Intent 실행시키기
        startActivity(intent);


    }
}

 

 

- 다음페이지라는 버튼과 Acticity파일 하나 더 만들기

 btn_next.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                // Activity 실행시키기
                Intent intent = new Intent(MainActivity.this, SubActivity.class);
                startActivity(intent);
            }
        });

Intent 안에 MainActivity.this( 보내는 곳 ) , SubActivity.class ( 받는 곳 ) 순서로 적는다

 

 

 

- 돌아가기 버튼 눌러서 MainActivity로 돌아가기

public class SubActivity extends AppCompatActivity{

    Button btn_pre;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sub);
        btn_pre = findViewById(R.id.btn_pre);

        btn_pre.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(SubActivity.this, MainActivity.class);
                startActivity(intent);
            }
        });

    }
}

이렇게하면 다음과 같이 에뮬레이터 뒤로가기 버튼을 누르면 모든 과정(stack)이 다 하나씩 뒤로가기 됨

task 들 -> multi task

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sub);
        btn_pre = findViewById(R.id.btn_pre);

        btn_pre.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               finish(); // 현재 Activity 종료 -> task에서 삭제 라는뜻
            }
        });

 현재 Activity를 종료하는 finish( ) 를 사용하면 된다!!!!!!!!!!

 

 

 

 

 

btn_next.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                // Activity 실행시키기
                Intent intent = new Intent(MainActivity.this, SubActivity.class);
                intent.putExtra("data",edt_input.getText().toString());
                //putExtra 여러번 가능
                startActivity(intent);
            }
        });

다음페이지 버튼에 input이라는 TextView하나 넣어서 subAcivity 페이지 갈때 입력한 텍스트 가져가기

 

 

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sub);
        tv_result = findViewById(R.id.tv_result);
        
        Intent intent = getIntent();
        String str = intent.getStringExtra("data");
        tv_result.setText(str);
        
        btn_pre = findViewById(R.id.btn_pre);
        btn_pre.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               finish(); // 현재 Activity 종료 -> task에서 삭제 라는뜻
            }
        });

sub에서는 intent 불러올때 new 하지 않는다

subActivity 받는쪽 에서는 getIntent를 사용하고 getStringExtra로 설정한 data 를 가져온다

반응형

'Android' 카테고리의 다른 글

Adapter View  (0) 2021.03.24
Intent 사용 2  (0) 2021.03.23
Constraint Layout + 주사위게임 만들기  (0) 2021.03.21
View와 xml 이란  (0) 2021.03.21
Constraint Layout 예제 실습  (0) 2021.03.19