2014-02-28 2 views
1

유틸리티 클래스에서 메소드를 호출하는 활동이 있습니다. 이 메소드는 사용자가 적격한지 확인합니다. 그들이 있다면 그것은 사실을 반환합니다. 일치하지 않으면 false를 반환하지만 이유를 설명하는 Alert 대화 상자를 만들고 엽니 다. 사용자가 대화 상자에서 확인 버튼을 클릭하면 새로운 작업이 시작됩니다. 클릭시 대화 상자 설정 코드는 다음과 같습니다. 대화 상자는 AlertDialog.Builder으로 확장되는 사용자 정의 대화 상자입니다.유틸리티 클래스에서 생성 된 대화 상자에서 활동 시작 - Android

if(dialog.getBodyText().toString().equals(prospectError)){ 
      dialog.setOkClickListener(new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        Intent i = new Intent(((Dialog)dialog).getContext(),NotEligibleActivity_.class); 
        ((Dialog)dialog).getContext().startActivity(i); 
       } 
      }); 

확인 버튼을 클릭하면 대화 상자는 닫히지 만 활동은 시작되지 않습니다. 컨텍스트로 checkEligiblity 메서드로 활동을 전달하고 있습니다. 대화 상자를 초기화 할 때 사용됩니다.

+0

public class Example extends Activity { Example instance = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); instance = this; ... } } 

및 사용 instance 변수는 나는 그것이 '내가 if 문에 중단 점을 넣어 – Blundell

+0

을 TRUE'에 해결하지 내기'if' 문 내부에 로그를 넣고 그것을 명중 않습니다 onclick setter. 또한 내 코드는 if (eligbile이 아님) {setOnClick 새 활동 시작} else {setOnClick 대화 상자 닫기}입니다. 수표뿐만 아니라 활동을 시작하도록 다른 사람을 설정했지만 그로 인해 활동이 시작되지 않습니다. – rykeeboy

+0

문제를 발견했습니다. 그것은 내 부분에 벙어리 실수했다 – rykeeboy

답변

0

대화 컨텍스트가 아닌 활동 컨텍스트를 사용해야합니다. 대신 ((Dialog)dialog).getContext()

+0

나는 활동 컨텍스트를 사용하여 시도했습니다. 활동에서 나는 checkEligible (this)를 호출한다. 유틸리티 클래스에서 나는 컨텍스트로 전달 된 활동을 사용하여 대화 상자를 만듭니다. 그래서 그들은 결국 양쪽 모두 똑같은 것이어야합니다. – rykeeboy

+0

둘은 동일하지 않습니다. 하나는 유형이고, 하나는 대화 상자입니다. 또 다른 옵션은 ((Dialog) 대화 상자) .getContext() 대신 getBaseContext()를 사용하는 것입니다. – Akos

+0

대화 상자의 컨텍스트가 활동 인 경우 사용자의 대답이 잘못되었습니다. – Blundell