#안드로이드 액티비티간의 데이터 전달 (intent 사용법) - 1 :
https://developer.android.com/reference/android/content/Intent.html
인텐트란, Activity를 띄우는 과정에서 인텐트(Intent)라는 것을 생성하고 인텐트의 파라미터로 액티비티 클래스 객체를 전달하여 새로운 액티비티를 띄울 수 있다.
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
view.setFocusable(false);
Intent intent = new Intent(AssemblyListActivity.this, AssemblyDetailActivity.class);
intent.putExtra("numOfRows",20); // 한페이지 결과수
intent.putExtra("pageNo",PAGE); // 페이지
intent.putExtra("dept_cd",searchList.get(position).getDeptCd()); // 부서코드
intent.putExtra("num",searchList.get(position).getNum()); // 국회의원 번호
intent.putExtra("jpgLink",searchList.get(position).getJpgLink()); // 사진
intent.putExtra("empNm",searchList.get(position).getEmpNm()); // 국회의원 이름
startActivity(intent);
}
});
@Override
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_assem_detail); // 넘어온 변수 받아오기
Intent intent = getIntent(); int numOfRows = intent.getIntExtra("numOfRows", 20); int pageNo = intent.getIntExtra("pageNo", 1); String dep_cd = intent.getStringExtra("dept_cd"); String num = intent.getStringExtra("num"); String jpgLink = intent.getStringExtra("jpgLink");
1) 데이터 전달하기
Intent intent = new Intent(현재Activity명.this, 전달해줄Activity명.class);
intent.putExtra("전달할 데이터명", 값); // 한페이지 결과수
startActivity(intent); // 전달
2) 데이터 받기
Intent intent = getIntent();
String dep_cd = intent.getStringExtra("가져올 데이터명");
*Bean 객체 intent 전달 방법
1) Intent로 전달할 객체를 Serializable 인터페이스 상속받아주기
package com.example.n3815.new_app.common.bean;
import android.graphics.drawable.Drawable;
import com.example.n3815.new_app.common.SearchCommon;
import org.simpleframework.xml.Element;
import org.simpleframework.xml.Root;
import java.io.Serializable;
/**
* Created by N3815 on 2016-12-27.
* 국회의원 기본 정보 pojo 객체
*/
@Root(name = "item")
public class AssemBean implements Serializable{
@Element(name = "deptCd", required = false)
private String deptCd; // 부서코드
@Element(name="num", required = false)
private String num; // 식별코드
@Element(name="empNm", required = false)
private String empNm; // 한글이름
...................
}
2) Serializable 인터페이스를 상속받은 객체를 intent로 전달하기
ArrayList<AssemBean> assemblyList = new ArrayList<AssemBean>(); // 전체 국회의원의 정보를 담는 객체
assemblyList.add(Object);
Intent intent = new Intent(LoadingActivity.this, AssemblyListActivity.class);
intent.putExtra("aseem", assemblyList); // 전달받은 객체 전달
startActivity(intent); // 화면에 뿌리기
3) Intent로 전달받은 객체 가져오기
ArrayList<AssemBean> assemblyList = new ArrayList<AssemBean>(); // 전체 국회의원의 정보를 담는 객체
// intent 받아온 Array 정보 가져오기
assemblyList = (ArrayList<AssemBean>) getIntent().getSerializableExtra("assem");
*부모 Activity 또는 타 Activity의 메소드 실행시키기
// 변경된 정보값을 다시 원본 배열에게 알리기
((AssemblyListActivity) context).changeItemInfo(selectedAssem);
- ((전달/실행시키려는 Activity명) context).호출할 메소드명(전달값);
* 여러 Activity를 요청 코드로 분류하여 요청하기
public static final int REQ_CODE_ANOTHER_ACTIVITY = 1001;
// 1. 새로운 액티비티 요청시 요청코드와 함께 액티비티를 띄우기
public void onButton1Clicked(View v){
Intent intent = new Intent(getApplicationContext(), AnotherActivity.class);
startActivityForResult(intent, REQ_CODE_ANOTHER_ACTIVITY);
}
// 2. 요청한 액티비티 전달이 잘 되었는지 확인
public void onActivityResult(int requestCode, int resultCode, Intent intet){
super.onAcitivyResult(requestCode, resultCode, intent);
if(requestCode == REQ_CODE_ANOTHER_ACTIVITY){
// 1번에서 띄운 액티비티의 요청 : onActivityResult가 실행됨
}
if(reslutCode == RESULT_OK){
// 응답으로 전달된 내용
}
}
* Intent의 Action 사용법
Intent intent = new (Itent.ACTION_DIAL, uri,parse("01012341234")); // new (Intent Action, 데이터)
startActivity(intent); // intent 메소드(intent);
* Intent Action 종류
Action name |
설명 |
ACTION_MAIN |
|
ACTION_ATTACH_DATA |
|
ACTION_PICK |
|
ACTION_GET_CONTENT |
|
ACTION_CALL |
전화 걸기 |
ACTIOIN_SENDTO |
|
ACTION_RUN |
|
ACTION_PICK_ACTIVITY |
|
ACTION_WEB_SEARCH | |
ACTION_VIEW | |
ACTION_EDIT | |
ACTION_CHOOSER | |
ACTION_DIAL | |
ACTION_SEND | |
ACTION_SYNC | |
ACTION_SEARCH | |
ACTION_ANSWER | |
ACTION_DELETE | |
ACTION_FACTORY_TEST | |
* Intent 메소드 종류
- startActivity() : 액티비티를 띄울 때 사용
- startService() : 서비스를 시작 시킬 때 사용
- broadcastIntent() : 브로드캐스팅을 수행할 때 사용
이어지는 링크