package com.example.example2; import android.os.Bundle; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; import android.graphics.Canvas; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button b1 = (Button) findViewById(R.id.error); b1.setOnClickListener(new OnClickListener(){ public void onClick(View v){ showDialog(1); } }); Button b2 = (Button) findViewById(R.id.electrics); b2.setOnClickListener(new OnClickListener(){ public void onClick(View v){ showDialog(2); } }); Button b3 = (Button) findViewById(R.id.computers); b3.setOnClickListener(new OnClickListener(){ public void onClick(View v){ showDialog(2); } }); } @Override protected Dialog onCreateDialog(int id) { Dialog dialog = null; switch (id) { case 1: dialog = new Dialog(this); dialog.setContentView(R.layout.custom_dialog_1); dialog.setTitle("Custom Dialog"); // Button exit = (Button) findViewById(R.id.exit); // exit.setOnClickListener(new OnClickListener(){ // public void onClick(View v){ // moveTaskToBack(true); // finish(); // android.os.Process.killProcess(android.os.Process.myPid()); // } // }); break; case 2: dialog = new Dialog(this); dialog.setContentView(R.layout.custom_dialog_2); dialog.setTitle("Custom Dialog"); break; } return dialog; } }
커스텀 다이알로그에 버튼을 넣어놨습니다.
커스텀 다이알로그가 화면에 뜰 경우 그 안에 있는 버튼 클릭시 앱이 종료되게 하는 기능을 주석처리한 코드부분을
넣었는데 에러가 나네요...
왜그런 걸까요 ㅠ?
Button exit = (Button) findViewById(R.id.exit);
현재 뷰는 메인 액티비티의 xml 을 나타내고 있기 때문에
다이얼로그에 있는 버튼의 경우 위와 같이 사용할 수 없구요
아래와 같이 해당 위젯이 속해있는 뷰에서 객체를 찾아야해요~
Button exit = (Button) dialog.findViewById(R.id.exit);
참고하세요
http://namsieon.com/316