마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 커스텀 다이알로그에서 버튼 클릭시 이벤트 처리...

0 추천
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;
 }
}

커스텀 다이알로그에 버튼을 넣어놨습니다.

커스텀 다이알로그가 화면에 뜰 경우 그 안에 있는 버튼 클릭시 앱이 종료되게 하는 기능을 주석처리한 코드부분을

넣었는데 에러가 나네요...

 

왜그런 걸까요 ㅠ?

아레인 (160 포인트) 님이 2014년 4월 16일 질문

1개의 답변

0 추천

Button exit = (Button) findViewById(R.id.exit);

현재 뷰는 메인 액티비티의 xml 을 나타내고 있기 때문에

다이얼로그에 있는 버튼의 경우 위와 같이 사용할 수 없구요

아래와 같이 해당 위젯이 속해있는 뷰에서 객체를 찾아야해요~

Button exit = (Button) dialog.findViewById(R.id.exit);

 

참고하세요

http://namsieon.com/316

초보개발자ㅠ (33,870 포인트) 님이 2014년 4월 17일 답변
...