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 |