2012-03-30 4 views
0

관련 코드 조각을 첨부 :실행 컨트롤은 OnClickListener의 OnClick이 반환 된 후에 어디로 전송됩니까? 코드

public class MyPreference extends Preference { 

    public MyPreference(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    this.ctx = context; 

     this.setOnPreferenceClickListener(new OnPreferenceClickListener() { 

      public boolean onPreferenceClick(Preference preference) { 
       Toast.makeText(ctx, "Preference has been clicked", Toast.LENGTH_LONG).show(); 

       return true; 
      } 
     }); 
    } 
} 

가 지금은 일부 처리를 수행 할 (기본적으로 마무리()를 호출)를 onPreferenceClick 핸들러 나 true를 반환하면.

포인터?

편집 onClick에는 finish()가 추가되었지만 작동하지 않습니다. 오류 없음. 그냥 토스트 뿐이야. MyPreferenceis 클릭 한 번 내 응용 프로그램을 닫으려고합니다.

public boolean onPreferenceClick(Preference preference) { 
       Toast.makeText(ctx, "Preference has been clicked", Toast.LENGTH_LONG).show(); 

       MainPreferenceActivity mainPref = new MainPreferenceActivity(); 
       mainPref.finish(); 

       return true; 
      } 

아마 내가 잘못하고 있습니다. MainActivity의 newInstance를 만들면 부모 MainActivity가 죽지 않습니다. 맞습니까? 나는 Java n android에 익숙하지 않다. 죄송합니다 :(!

+1

아니요. 일반적으로 익명의 클래스입니다. 끝났습니다 ... 그게 .. 끝내려면 왜 그 메소드가 돌아 오기를 기다리는거야 .. 결국 당신은 코딩하는 사람입니다. ** Onclick ** 메소드 .. – ngesh

답변

0

당신은 디버깅 포인트를 설정하고 모든 변수의 흐름과도 다른 값을 확인할 수있는 이클립스와 코드를 디버깅보십시오. 심지어 단계 디버깅에 의해 단계를 확인할 수 있습니다.

다음으로 이동 단계별로 F8 및 디버깅과 디버그 포인트 F6 함께.

이 모든 곳 코드에 도움이 최고 체크 할 수 있습니다.

0

당신이 코드의 큐션의 흐름을 추적하려는 경우, 당신이 로그를 사용하는 것이 좋습니다 .e (TAG, ""), Logcat 윈도우 (Eclipse compostion)에서이 값을 얻으십시오. 당신의 questi 에, 나는 2 개의 아이디어가있다 :

1) 끝내고 싶은 경우에, OnClick 방법에서 끝내십시오. 해봐요 루틴을 사용하면 플래그가 설정되어있는 경우 수행 할 옳은 일 동안

if(flag) { 
    doSomething(); 
} 

:

2) 당신은 또한 같은, 당신의 onclick 방법 내부 플래그를 설정할 수 있습니다.

관련 문제