안드로이드 개발 질문/답변
(글 수 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; } } }
인텐트로 액티비티를 호출할 때 액션을 기반으로 암시적인 호출을 하기 때문에, 이 때 이 액션에 대응 가능한 앱의 목록을 보여주는 것으로 정상 동작입니다. 이런 동작이 있음으로 인해서 연락처 앱을 바꾼다거나 전화를 거는 앱을 바꾸는 게 가능하게 되는거죠.