리스트가 있고, 주소록에서 폰번호랑 메일을 받아와서 리스트를 작성시킵니다.
이어서 리스트 아이템 클릭 이벤트를 등록해서, 클릭 시 다이얼로그를 띄우도록 작성했습니다.
다이얼로그는 3개의 에디트 텍스트와 2개의 버튼으로 되있는데,
여기서 에디트 텍스트에 문자를 입력하려고 터치하면 어플이 종료되네요 ㅠ
뭐가 문제인걸까요???
package com.example.administrator.contacts;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.provider.ContactsContract;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.Toast;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
private ListView mListView;
private MyListAdapter mListAdapter;
private ArrayList<list_item> list_itemArrayList;
private Button mButton;
String name="조정석", number="010-1234-5678", mail = "hwasin@gmail.com";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//listview에 어댑터 생성
mListView = (ListView)findViewById(R.id.ListView);
list_itemArrayList = new ArrayList<list_item>();
//주소록 추가 버튼 이벤트
mButton = (Button)findViewById(R.id.add_btn);
mButton.setOnClickListener(new Button.OnClickListener(){
public void onClick(View view){
//연락처 선택할 수 있게 주소록 가져옴
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setData(ContactsContract.CommonDataKinds.Phone.CONTENT_URI); //주소록 uri와 연결
startActivityForResult(intent, 0);
}
});
//내용추가
//list_itemArrayList.add( new list_item(name,number,mail));
//어댑터연결
//mListAdapter = new MyListAdapter(MainActivity.this, list_itemArrayList);
//mListView.setAdapter(mListAdapter);
//리스트클릭 이벤트 리스너 추가 -> 다이얼로그 띄워서 수정,삭제 가능하도록 만들자...
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener(){
String Uname, Uphone, Umail; //사용자에게 재입력 받을 정보.
//수정 (갱신)
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//연락처 수정 다이얼로그
AlertDialog.Builder mAlert = new AlertDialog.Builder(MainActivity.this);
mAlert.setTitle("연락처 정보 수정");
mAlert.setMessage("메일주소를 반드시 입력해 주세요.");
final EditText Ename = new EditText(MainActivity.this);
final EditText Ephone = new EditText(MainActivity.this);
final EditText Email = new EditText(MainActivity.this);
LinearLayout ll=new LinearLayout(MainActivity.this);
ll.setOrientation(LinearLayout.VERTICAL);
ll.addView(Ename);
ll.addView(Ephone);
ll.addView(Email);
mAlert.setView(ll);
//mAlert.setCancelable(false);
/*
Uname = list_itemArrayList.get(position).name;
Uphone = list_itemArrayList.get(position).phone;
Umail = list_itemArrayList.get(position).mail;
mAlert.setPositiveButton("Update", new DialogInterface.OnClickListener() {
//데이터 갱신
public void onClick(DialogInterface dialog, int id) {
if(Ename.getText().toString()!=null){
Uname = Ename.getText().toString();
}
if(Ephone.getText().toString()!=null){
Uphone = Ephone.getText().toString();
}
if(Email.getText().toString()!=null){
Umail = Email.getText().toString();
}
//ACTION
}
});
mAlert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
*/
mAlert.show();
//AlertDialog alert = mAlert.create();
//alert.show();
//데이터베이스 갱신해야댐!!!!!!!!!!!
//list_itemArrayList.get(position).name = Uname;
//list_itemArrayList.get(position).phone = Uphone;
//list_itemArrayList.get(position).mail = Umail;
mListView.setAdapter(mListAdapter);
mListAdapter.notifyDataSetChanged();
//Toast.makeText(MainActivity.this ,list_itemArrayList.get(position).name,Toast.LENGTH_LONG).show();
}
});
}
protected void onActivityResult(int requestCode, int resultCode, Intent data){
if(resultCode == RESULT_OK){
Cursor cursor = getContentResolver().query(data.getData(), new String[]{ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
ContactsContract.CommonDataKinds.Phone.NUMBER},null,null,null);
cursor.moveToFirst();
name = cursor.getString(0);
number = cursor.getString(1);
//여기서 불러온 주소록 데이터 데이터베이스에 적재시켜야댐!!!!!!!!!!!
//내용추가
list_itemArrayList.add( new list_item(name,number,null));
//어댑터연결
mListAdapter = new MyListAdapter(MainActivity.this, list_itemArrayList);
mListView.setAdapter(mListAdapter);
Toast.makeText(getApplicationContext(), "추가되었습니다.\n"+"이름을 눌러 정보를 수정 또는 추가할 수 있습니다.", Toast.LENGTH_SHORT).show();
cursor.close();
}
super.onActivityResult(requestCode,requestCode,data);
}
}

캡쳐화면인데 저기 저 커서있는부분을 클릭하면 어플리케이션이 종료되네요.ㅠ
딱히 오류메시지가 안드로이드창에서 뜨지는 않네욥...