#안드로이드 액티비티간의 데이터 전달 (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() : 브로드캐스팅을 수행할 때 사용
이어지는 링크
- 안드로이드 액티비티간의 데이터 전달 (intent 사용법) - 2 : http://aileen93.tistory.com/30
'◼︎ 개발 > Android' 카테고리의 다른 글
[Android] 안드로이드 스크롤뷰 사용법 (Android scrollview) (0) | 2017.01.24 |
---|---|
[Android] 안드로이드 listView에서 viewHolder 구현하기 (0) | 2017.01.23 |
[Android] 안드로이드 커스텀 리스트뷰(listView)에서 아이템 클릭이 안될 때.. (0) | 2017.01.23 |
[Android] 안드로이드 이미지 버튼 사용법 (ImageButton) (0) | 2017.01.23 |
[Android] 안드로이드 LinearLayout 사용법 (0) | 2017.01.23 |
[Android] 안드로이드 레이아웃 인플레이션 (Layout inflation) (0) | 2017.01.20 |
[Android] 안드로이드 액티비티 생명주기 (Aandroid activity life cycle) (0) | 2017.01.19 |