0. 내 App 내 다른 Activity 로 데이터를 넘겨서 화면을 전환 시키자
1. 다른 App 에 데이터를 넘겨서 실행시켜보자
2. 내 App도 다른 App 에서 넘겨주는 데이터를 받아서 실행하도록 설정하자
fin. 전환/실행 완료 후 Caller 에게 intent data를 넘기자
[내 App 내 다른 Activity 로 데이터를 넘겨서 화면을 전환 시키자]
1. ItemListActivity 에서 ItemViewActivity로 보내자.
ItemListActivity .java
public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Log.d(ItemListActivity.class.getSimpleName(), position + ", " + id +" 클릭."); TodoItem item = data.get(position); Intent intent = new Intent(ItemListActivity.this, ItemViewActivity.class); intent.putExtra("item", item); startActivity(intent); }
intent.putExtra 함수는 원시타입 외에는 Serializeable 인터페이스 형 객체만 전송이 가능하다.
그렇기 때문에 TodoItem 클래스를 아래와 같이 implements 한다.
TodoItem.java
public class TodoItem implements Serializable{
2. ItemViewActivity 에서 넘겨받은 Intent를 이용해서 수정한다.
ItemViewActivity.java
intent = getIntent(); TodoItem item = (TodoItem)intent.getSerializableExtra("item"); setTitle(item.getTitle()); content.setText(item.getContent());
[다른 App 에 데이터를 넘겨서 실행시켜보자]
App 내의 다른 Activity를 불러올 수 있는 Intent 중에서 명시적 아니고 암시적 Intent 를 이용해서 넘기게 된다.
Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("text/plain"); intent.putExtra(Intent.EXTRA_TEXT, content.getText().toString()); startActivity(Intent.createChooser(intent, "공유할 앱을 선택하세요."));
- intent.setType : 보낼 데이터 타입을 지정
- intent.putExtra : 보낼 데이터를 넘김
[내 App도 다른 App 에서 넘겨주는 데이터를 받아서 실행하도록 설정하자]
AndroidManifest.xml 샅샅이 디비보자!
<activity android:name=".ItemViewActivity" android:theme="@style/AppTheme"/> <activity android:name=".ItemEditActivity" android:theme="@style/Theme.AppCompat.Light"> <intent-filter> <action android:name="android.intent.action.SEND"/> <category android:name="android.intent.category.DEFAULT"/> <data android:mimeType="text/plain"></data> </intent-filter> </activity> <activity android:name=".ItemListActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
1. 지금 총 3개의 Activity 가 등록 되어 있다.
- ItemViewActivity
- ItemEditActivity
- ItemListActivity
2. 이 3개의 Activity 중에서 .apk 설치를 통해 바탕화면에 런쳐로 등록될 Activity 는 ItemListActivity 이다.
<intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter>
이 intent-filter 라는 태그 중에 category 태그가 바로 그 역할을 해 준다.
3. intent-filter 내 아래 처럼 세팅 하면 다른 App 에서 보내는 데이터를 공유받아 실행될 수 있다.
<intent-filter> <action android:name="android.intent.action.SEND"/> <category android:name="android.intent.category.DEFAULT"/> <data android:mimeType="text/plain"></data> </intent-filter>
- action : 어떤 타입의 동작인가 (Intent 보낼 때 Intent.ACTION_** 으로 설정 가능)
- category : 어떤 카테고리의 동작인가 (Intent 보낼 때 Intent.CATEGORY_** 으로 활용가능하며 리스팅된 모든 category에 일치해야만 동작하게 됨, DEFAULT 는 반드시 있어야함)
- data : 어떤 타입의 데이터를 받을 것인가
[전환/실행 완료 후 Caller 에게 intent data를 넘기자]
Intent
댓글 없음:
댓글 쓰기