2010/04/28 01:32
in·tend 미국∙영국 [In|tend] : 1. 의도[작정]하다, (…하려고) 생각하다
안드로메다 Intent를 공부하고 있어요. Intent의 쓰임을 볼까요?
- 누 가? Application의 Componet가
- 무엇을? Application의 Core 구성요소인 activities, services, broadcast receivers을 (에게)
- 왜 에? ① 3가지 구성요소를 실행시키거나(일종의 재사용성도 포함), ② 이들간 데이터를 주고받기 위해
- 어떻게? ① 명시적으로 - Application의 Core 구성요소의 class? 이름을 직접 지명
② 암시적으로 - action/category/data 3가지 attr를 통한 intent-filter에 걸려들게 해서..^^
각각에 대한 코드를 봅시다.
<MyIntentActivity.java>
public class MyIntentActivity extends
Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main1);
Button bnt = (Button)findViewById(R.id.Button01);
bnt.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(MyIntentActivity.this,
com.your.yourintent.YourIntentActivity.class);
startActivity(intent);
}
});
}
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main1);
Button bnt = (Button)findViewById(R.id.Button01);
bnt.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(MyIntentActivity.this,
com.your.yourintent.YourIntentActivity.class);
startActivity(intent);
}
});
}
}
<AndroidMenifest.xml>
<activity android:name=".MyIntentActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.your.yourintent.YourIntentActivity"
android:label="@string/app_name">
</activity>
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.your.yourintent.YourIntentActivity"
android:label="@string/app_name">
</activity>
다음과 같이 수정만하면 됩니다. action으로 호출해 보지요.
<MyIntentActivity.java>
......
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent("com.your.yourintent.TEST");
startActivity(intent);
}
});
......
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent("com.your.yourintent.TEST");
startActivity(intent);
}
});
......
<AndroidMenifest.xml>
......
<activity android:name="com.your.yourintent.YourIntentActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="com.your.yourintent.TEST" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
......
<activity android:name="com.your.yourintent.YourIntentActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="com.your.yourintent.TEST" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
......
MyIntentActivity의 Button 위젯을 클릭하면 YourIntentActivity가 호출됩니다. -> 이때 YourIntentActivity의 TextView값을 가져와서 intent의 결과값으로 저장합니다. YourIntentActivity의 Button 위젯을 클릭하면 -> MyIntentActivity가 호출되고 결과값으로 전달받은 값을 자신의 TextView에 표시합니다.
<MyIntentActivity.java>
public class MyIntentActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main1);
Button bnt = (Button)findViewById(R.id.Button01);
bnt.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main1);
Button bnt = (Button)findViewById(R.id.Button01);
bnt.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent("com.your.yourintent.TEST");
startActivityForResult(intent, 0);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
TextView txt = (TextView)findViewById(R.id.Txt01);
super.onActivityResult(requestCode, resultCode, data);
if(resultCode == RESULT_OK)
{
if(requestCode == 0)
{
txt.setText(data.getExtras().get("data").toString());
}
}
}
}
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
TextView txt = (TextView)findViewById(R.id.Txt01);
super.onActivityResult(requestCode, resultCode, data);
if(resultCode == RESULT_OK)
{
if(requestCode == 0)
{
txt.setText(data.getExtras().get("data").toString());
}
}
}
}
<YourIntentActivity.java>
......
public class YourIntentActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main2);
Button bnt = (Button)findViewById(R.id.Button01);
final TextView txt = (TextView)findViewById(R.id.Txt02);
bnt.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = getIntent();
intent.putExtra("data", txt.getText());
setResult(RESULT_OK,intent);
finish();
}
});
}
}
......
public class YourIntentActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main2);
Button bnt = (Button)findViewById(R.id.Button01);
final TextView txt = (TextView)findViewById(R.id.Txt02);
bnt.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = getIntent();
intent.putExtra("data", txt.getText());
setResult(RESULT_OK,intent);
finish();
}
});
}
}
......
MyIntentActivity의 Button 위젯을 클릭하면 Intent에 TextVeiw에 있는 값을 저장합니다. 그리고 YourIntentActivity가 호출합니다. -> YourIntentActivity의 Button 위젯을 클릭하면 -> 자신의 TextView에 MyIntentActivity로부터 전달받은 Intent의 값을 표시합니다.
<MyIntentActivity.java>
......
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
TextView txt = (TextView)findViewById(R.id.txt01);
Intent intent = new Intent();
Bundle bundle = new Bundle();
bundle.putCharSequence("data", txt.getText());
intent.setClass(MyIntentActivity.this, com.your.yourintent.YourIntentActivity.class);
intent.putExtras(bundle);
startActivity(intent);
}
});
......
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
TextView txt = (TextView)findViewById(R.id.txt01);
Intent intent = new Intent();
Bundle bundle = new Bundle();
bundle.putCharSequence("data", txt.getText());
intent.setClass(MyIntentActivity.this, com.your.yourintent.YourIntentActivity.class);
intent.putExtras(bundle);
startActivity(intent);
}
});
......
<YourIntentActivity.java>
......
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
TextView txt = (TextView)findViewById(R.id.txt02);
Intent intent = getIntent();
txt.setText(intent.getExtras().getString("data"));
}
});
......
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
TextView txt = (TextView)findViewById(R.id.txt02);
Intent intent = getIntent();
txt.setText(intent.getExtras().getString("data"));
}
});
......
Intent를 사용하는 법을 알았으니, permission과 uses-permission을 통해 접근제어하는 법도 공부해봐야 겠네요. ^.^
'인영이의 공부 > 안드로메다' 카테고리의 다른 글
| in·tend 미국∙영국 [In|tend] (0) | 2010/04/28 |
|---|



