안드로이드 개발 질문/답변
(글 수 45,052)
간단한 예제를 책을 보고 따라하다가 제가 임의로 좀 바꿨는데 실행하면 "작업을 수행할 때 사용하는 애플리케이션" 창이 떠요.(파일첨부했음)
예제내용은
1. "연락처 선택"이라는 버튼을 클릭하면 (메인 액티비티)
2. 이름이 쭉 들어있는 새로운 액티비티가 뜨고 (서브 액티비티)
3. 그중에서 임의로 한 이름을 클릭하면 그 이름이 메인 액티비티에 표시가 되게 하려는것입니다.
그런데 3번을 실행하고 나면 위에처럼 저런 메시지창이 뜹니다.
전혀 상관없는 저런 내용이 왜 뜨는지 모르겠어요.
초보라 혹시 프로그램 중에 오류가 있는건지 도움 부탁드립니다.
public class ContactPicker extends Activity {
/** Called when the activity is first created. */
private ArrayAdapter<String> bb;
private ArrayList<String> Items;
final static int PICK_CONTACT = 1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.contactpicker);
Items = new ArrayList<String>();
Items.add("태연");
Items.add("윤아");
Items.add("수영");
Items.add("티파니");
Items.add("유리");
Items.add("제시카");
Items.add("효연");
Items.add("써니");
Items.add("서현");
int resID = android.R.layout.simple_list_item_1;
bb = new ArrayAdapter<String>(this, resID, Items);
ListView lv = (ListView)findViewById(R.id.contactListView);
lv.setAdapter(bb);
lv.setOnItemClickListener(mItemClickListener);
}
AdapterView.OnItemClickListener mItemClickListener =
new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView parent, View view,
int position, long id) {
String name = Items.get(position);
Intent intent = new Intent(Intent.ACTION_PICK);
intent.putExtra("selected_name", name);
startActivityForResult(intent, PICK_CONTACT);
}
};
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch(requestCode) {
case (PICK_CONTACT): {
if(resultCode == RESULT_OK) {
TextView tv = (TextView)findViewById(R.id.itemTextView);
tv.setText(data.getStringExtra("selected_name"));
}
break;
}
}
}




인텐트로 액티비티를 호출할 때 액션을 기반으로 암시적인 호출을 하기 때문에, 이 때 이 액션에 대응 가능한 앱의 목록을 보여주는 것으로 정상 동작입니다. 이런 동작이 있음으로 인해서 연락처 앱을 바꾼다거나 전화를 거는 앱을 바꾸는 게 가능하게 되는거죠.