※ 인텐트란?
- 액티비티 전환시 정보를 전달하기 위한 목적으로 만들어진 장치
- 인텐트를 이용하여 액티비티에서 웹사이트를 연결하거나 다른 어플을 실행하거나(ex 전화 다이얼, 전화 걸기, 연락처) 할 수 있다.
이러한 것들의 사용법은 안드로이드 프레임 워크에 다 설정 되어 있으므로 레퍼런스 문서를 참조하면 된다.
- 또한 엑티비티를 이용하여 데이터를 전달하기도 한다.
사진출처 : 서울위즈 앱 창업자를 위한 안드로이드 실무 동영상
※ 명시적 인텐트 & 암시적 인텐트
- 명시적 인텐트 : 호출 대상이 정해져 있는 경우
- 암시적 인텐트 : 호출 대상이 정해져 있지 않은 경우
- 암시적 인텐트를 사용할 때에는 androidManifest.xml파일에 permission을 통해 권한을 줘야함.
※ 액티비티 통신
- 액티비티 간에 통신 수단으로 사용되는 인텐트 안에 특정 정보를 전달 할 수 있다.
- 액티비티 간의 통신은 일방적으로 보내고 끝나는 통신(startActivity)과 주고 받는 통신(startActivityForResult)이 있다.
사진출처 : 서울위즈 앱 창업자를 위한 안드로이드 실무 동영상
※ startAcivity를 이용한 액티비티 간의 통신
데이터를 세팅하고 전달하는 부분
public class MainActivity extends Activity {
Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.bt_move_activity);
button.setOnClickListener(onclick);
}
OnClickListener onclick = new OnClickListener() {
@Override
public void onClick(View v) {
switch(v.getId()){
case R.id.bt_move_activity:
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
//데이터를 인텐트에 세팅 (key값, 전송할 값)
intent.putExtra("u_id", "id값");
intent.putExtra("u_pw", "pw값");
startActivity(intent);
break;
default :
break;
}
}
};
}
데이터를 전달받는 부분
public class SecondActivity extends Activity {
Button btn ;
TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setContentView(R.layout.activity_second);
//전달받은 데이터를 받아서 값을 레이아웃에 넣는 부분
Intent intent = getIntent();
String u_id = intent.getStringExtra("u_id");
String u_pw = intent.getStringExtra("u_pw");
tv = (TextView) findViewById(R.id.textView);
tv.setText("전달받은 ID : " + u_id + "전달받은 PW : " + u_pw);
btn = (Button) findViewById(R.id.move_main);
btn.setOnClickListener(onclick);
}
}
※startActivityForResult를 이용한 액티비티간의 통신
데이터를 세팅하고 전달하는 부분
public class MainActivity extends Activity {
final static int USER_INFO = 0;
Button button;
TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
Log.i("MainActivity", "onCreate() 생명주기 test");
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.bt_move_activity);
button.setOnClickListener(onclick);
tv = (TextView) findViewById(R.id.mainTV);
}
OnClickListener onclick = new OnClickListener() {
@Override
public void onClick(View v) {
switch(v.getId()){
case R.id.bt_move_activity:
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtra("u_id", "abc");
intent.putExtra("u_pw", "1234");
//인텐트와 구분자를 전송한다.
startActivityForResult(intent, MainActivity.USER_INFO);
break;
default :
break;
}
}
};
//startActivityForResult를 이용했기 때문에 다시 값을 전달 받는다. 다시 값을 전달 받는 부분
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//requestCode : 전송한 구분자 값
//resultCode : 전송받은 구분자 값
//data : 전송받은 데이터값 putExtra
switch(requestCode){
case MainActivity.USER_INFO :
if(resultCode == SecondActivity.LOG_SU){
tv.setText("login success : " + data.getStringExtra("user_info"));
}else if(resultCode == SecondActivity.LOG_FA){
tv.setText("login fail : " + data.getStringExtra("user_info"));
}
}
}
}
데이터를 전달받고 다시 전달한 곳으로 데이터를 보내는 부분
public class SecondActivity extends Activity {
Button btn ;
TextView tv;
public final static int LOG_SU = 0;
public final static int LOG_FA = 1;
boolean logFlag;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setContentView(R.layout.activity_second);
Intent intent = getIntent();
String u_id = intent.getStringExtra("u_id");
String u_pw = intent.getStringExtra("u_pw");
tv = (TextView) findViewById(R.id.textView);
tv.setText("전달받은 ID : " + u_id + "전달받은 PW : " + u_pw);
if(u_id.equals("abc")&& u_pw.equals("1234")){
logFlag =true;
}else{
logFlag =false;
}
btn = (Button) findViewById(R.id.move_main);
btn.setOnClickListener(onclick);
}
OnClickListener onclick = new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId()){
case R.id.move_main :
Intent intent = new Intent(SecondActivity.this, MainActivity.class);
//인텐트에 데이터 세팅
intent.putExtra("user_info", tv.getText().toString());
if(logFlag){
//구분자값을 인텐트에 세팅해 다시 전달
setResult(SecondActivity.LOG_SU, intent);
}else{
//구분자값을 인텐트에 세팅해 다시 전달
setResult(SecondActivity.LOG_FA, intent);
}
finish();
break;
default :
break;
}
}
};
}
'플밍 is 뭔들 > 안드로이드_인강' 카테고리의 다른 글
10-1. 액션바 & 옵션메뉴 (0) | 2016.11.27 |
---|---|
09-1. 프레그먼트 (0) | 2016.11.27 |
07-2. 액티비티 생명주기 테스트 및 로그 활용법 (0) | 2016.11.27 |
07-1. 액티비티 (0) | 2016.11.27 |
06-2. 이벤트를 이용한 드로잉 (0) | 2016.11.27 |