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

custom dialogListener에서 Intent 사용 질문ㅠㅠㅠㅠㅠㅠ

0 추천

커스텀 다이얼로그를 만들었는데 커스텀 리스트2개와 밑에 확인과 취소 버튼이 있는 구조입니다.

밑에 그림은 다이얼로그 클래스내  있는 온클릭인데 확인, 취소버튼 관련입니다.

확인버튼을 눌렀을때 커스텀 다이얼로그 리스너를 부르도록 되어있습니다.

@Override
public void onClick(View v) {
    final MyListAdapter mMyAdapter = new MyListAdapter();

    switch (v.getId()){
        case R.id.DialogCancelTv:
            cancel();
            break;
        case R.id.DialogCheckTv:
            /* Listener로 등록한 객체가 있으면 호출 */
            dialogListener.onPositiveClicked(passItem);
            dismiss();
            break;
    }
}

아래그림은 액티비티 클래스에서 다이얼로그를 띄우는 버튼 관련 온클릭인데, 여기서 다이얼로그의 확인버튼 리스너를 

오버라이딩합니다. 다이얼로그내 리스트중 선택한 값을 받아와서 다른 액티비티로 넘겨주는 코드를 작성한것인데

다음 액티비티로 넘겨주는 과정에서 오류가 발생합니다.

@Override
public void onClick(View v){
    switch (v.getId()) {
        case R.id.detailButton:
            SelectDialog dialog = new SelectDialog(this,start1,start2);
            dialog.setDialogListener(new MyDialogListener() {  // MyDialogListener 를 구현
                @Override
                public void onPositiveClicked(MyItem myItem) {
                    Intent intent = new Intent(getApplicationContext(),DetailActivity.class);
                    intent.putExtra("final_start",myItem);
                    intent.putExtra("final_end",passItem);
                    startActivity(intent);
                }
                @Override
                public void onPositiveClicked(String station) {}
            });
            dialog.show();
            break;
    }

}
seehwanjang (140 포인트) 님이 2017년 12월 4일 질문

1개의 답변

0 추천
MyDialogListener 는 Context를 상속받은 객체가 아니기 때문에, startActivity 호출이 안됩니다.

사용하시려면,

context 객체를 넘겨주던지,

Activity 별도 함수에서 호출 해야 합니다.

public void onClick(View v){ } 와 동일한 위치에.

public void click() {

      Intent intent = new Intent(getApplicationContext(),DetailActivity.class);
    intent.putExtra("final_start",myItem);
    intent.putExtra("final_end",passItem);
    startActivity(intent);

 }

같은 함수를 만드시고,

public void onPositiveClicked(MyItem myItem) {

  click();

} 과 같이 해당 함수를 부르도록 바꿔 보세요.
익명사용자 님이 2017년 12월 4일 답변
답변 정말정말 감사합니다!!!
...