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

커스텀다이얼로그 안에 버튼 등록 문제 입니다.

0 추천

public class LoadingDialog extends EnhancedDialog{
	private ProgressBar Progress;
	private Button SamplePlay;
	private Button GamePlay;
	private LoadingDialog dialog;
	private Context context;
	public LoadingDialog(Context context) {
		super(context);
		this.context = context;
		// TODO Auto-generated constructor stub
		dialog = this;
	}
	@Override
	protected void onCreate(Bundle savedInstanceState){
		super.onCreate(savedInstanceState);
		
		LayoutInflater inflater = LayoutInflater.from(context);
		View v = inflater.inflate(com.Planet.R.layout.loading_dialog, null);
		
		Progress = (ProgressBar)v.findViewById(com.Planet.R.id.progressBar1);
		SamplePlay = (Button)v.findViewById(com.Planet.R.id.SamplePlay);
		GamePlay = (Button)v.findViewById(com.Planet.R.id.start);
		
		SamplePlay.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				samplePlay(State.getMusic());
			}
		});
		GamePlay.setOnClickListener(new View.OnClickListener(){
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
			}
		});
		setContentView(com.Planet.R.layout.loading_dialog);
	}
	private void samplePlay(Music m){
		try{
			Log.d("Start sampleMusic","test!!!");
			MusicManager.mPlayer.reset();
			MusicManager.mPlayer.setDataSource(m.getMusicPath());
			MusicManager.mPlayer.prepare();
			MusicManager.mPlayer.seekTo(0);
			MusicManager.mPlayer.start();
		}catch(Exception e){
			Log.d("Loading Dialog", e.getMessage());
		}
	}
	@Override
	public void dismiss(){
		super.dismiss();
		MusicManager.mPlayer.reset();
	}
}

이와 같이 구성을 하였는데 onClickListener가 제대로 등록이 안되네요.

에러메세지는 없는데, 버튼이  작동을 안합니다.

 

처음에는 아래 두라인이 없는 형식으로 작성을 했었는데

		
		LayoutInflater inflater = LayoutInflater.from(context);
		View v = inflater.inflate(com.Planet.R.layout.loading_dialog, null);
		

Veiw.setOnClickListener에서 널포인터 익셉션이 발생했구요.

비슷한 문제 겪으신분 계신가요?

rhaps20 (6,010 포인트) 님이 2013년 8월 9일 질문

1개의 답변

0 추천
 
채택된 답변
커스텀 다이얼로그 내에 있는 버튼들의 포커스를 false로 해보세요.
아나콘다v (4,670 포인트) 님이 2013년 8월 9일 답변
rhaps20님이 2013년 8월 20일 채택됨
안되는군요.

스택오버플로우 보고

액티비티클래스에서 리스너 다는 작업을 해봤는데

이래도 널포인터 익셉션이 나네요?;;;;
온클릭에서 널포인트 익셉션이라는건
해당 레이아웃에 버튼이 없을때 발생하는 것으로 알고 있는데......
레이아웃 아이디와 버튼 아이디를 확인해보셔야겠네요.
답변이 늦어서 죄송합니다~

setContentView();를 가장 먼저 해주어야 하는 거 였습니다.

뷰가 설정이 안되서 인식이 안되거나 널포인터가 발생했던거구요.

도와주셔서 감사합니다~
...