일단 현재 이렇게 입력 받는 Activity가 있구요
각항목을 입력 안하고 "확인"버튼을 눌렀을때
그항목을 입력하세요 라고 alert이 뜨게 하고 싶습니다 그리고 만약에 뜬다면
예를들어 다른것은 다입력해는데 차량번호를 입력 안하고 확인 버튼을 눌렀다면
먼저 입력한것은 그대로 나오고 안입력한 부분 위치로 가게 할수있나요??(focus이동)
JSP의 javaScript function 처럼요..
웹만 하다 보니 그렇게 할수있을꺼란 생각이 드는데 잘안되네요
밑에 대략적인 소스 적어봤습니다
public class Setting_ACTIVITY extends Activity {
...
public void onCreate(Bundle savedInstanceState) {
...
carName =(EditText)findViewById(R.id.input_car_name); //차량이름
carCompany=(Spinner)findViewById(R.id.spinner_car_company); //제조사
...
Button submit_bt = (Button) findViewById(R.id.submit);
...
submit_bt.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if(carName.getText().toString().equals("")){
System.out.println("222"); //<=========================잘찍힙니다
showDialog(NAME_IS_NOTHING);//<===========onCreateDialog 호출
}
......
protected Dialog onCreateDialog(int id) { //<==============일단 onCreateDialog는 호출되었습니다
System.out.println("id : "+id); <================= id : 1 이라고 찍혓습니다
switch (id) {
case NAME_IS_NOTHING:
return new AlertDialog.Builder(this)
.setIcon(R.drawable.icon )
.setTitle("입력확인창")
.setMessage("다시입력해주세요")
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
})
.create();
}
return null;
}
그런데 alert창이 호출이 안되네요
다른 페이지에서는 밑의 소스와 같이 하여 alert창을 잘뿌려 줬었는데
똑같이 하니깐 안되어서 인터넷 참조하여 위의 방식으로 바꿨는데도 alert창이 안뜨네요 ㅜㅜ
제방식에 문제가 있는건가요?
btn_reset.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
ResetAlert();
}
});
public void ResetAlert(){
AlertDialog alert = new AlertDialog.Builder( this )
.setIcon( R.drawable.icon )
.setTitle( "초기화 하시겠습니까?" )
.setMessage( "이 작업은 모든 데이터를 삭제하고 초기화 합니다" )
.setPositiveButton( "OK", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
try{
mDbHelper.open();
for(int i=0 ; i<arr_TableName.length ; i++){
reportif.deleteAllRow(DbAdapter.mDb, arr_TableName[i]);
}
}catch(Exception e){
e.printStackTrace();
}finally{
mDbHelper.close();
Intent i = new Intent(c, Intro.class);
startActivity(i);
}
}
}).setNegativeButton( "Cancel", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
}
})
.show();
}
public Dialog onCreateDialog
@Override
public void onPrepareDialog
요거 2개를 오버라이드 하십시오.
알터다이얼로그 같은경우 오버라이드를 하면 지금 실행되어 있는 액티비티의 종속되어서 한번 만들어지고 그 다음 호출할 때는
다시 생성하지 않기 때문에 성능에서도 좋구요. 추상 클래스이기 때문에 이렇게 메소드 2개를 다 구현해주셔야 됩니다.
onPrepareDialog 이 메소드에서 메시지나 타이틀 등을 다시 셋팅할 수 있습니다.
onCreateDialog에서 처음 생성된 다이얼로그는 그 다음 onPrepareDialog이 메소드를 호출하고
그 다음 버튼 눌렀을 때 부터는 onPrepareDialog 이 메소드만 호출합니다 무슨 말인지 아시겠죠?
onPrepareDialog 이 메소드만 안에 바꾸면 누를때마다 메시지도 바꿀 수 있습니다.ㅎㅎ