2012-07-01 2 views
0

나는이 질문에 어떻게 단어를 쓸지 모르겠다. 그래서 나는 그면에서 할 수있는 최선을 다했다. 따라서 내 활동에 DatePicker을 만드는 데 문제가 있습니다.Java에서 클래스를 사용하는 범위는 어떻게 작동합니까?

EditEventActivity.java

DateDialogFragment frag = DateDialogFragment.newInstance(this, new 
DateDialogFragmentListener() { 

      @Override 
      public void updateChangeDate(int year, int month, int day) { 
       // TODO Auto-generated method stub 

      } 
     }, sYear, sMonth, sDay); 

내가 나에게 오류를주는 무슨이 가지고있는 newInstance() 방법이 나에게 오류를주고있다 코드입니다. 이 오류는 이것이다 :

The method newInstance(Context, AddEventActivity.DateDialogFragmentListener, int, int, 
int) in the type DateDialogFragment is not applicable for the arguments 
(EditEventActivity, new EditEventActivity.DateDialogFragmentListener(){}, int, int, 
int) 

은 이제 DateDialogFragment는 자신의 파일에 있습니다. 나는 그것을 게시 할 필요가 있다고 생각하지 않는다. 그것이 바로 그 것이다. 하지만 내 인터페이스는 AddEventActivity.java입니다. 이제 이것이 내가 혼란스러워하는 것입니다. 내 정적 메서드 newInstance()에서 DateDialogFragment는 DateDialogFragmentListener이 아니며 AddEventActivity.DateDialogFragmentListener이 아닙니다. 그래서 나는 그 문제가 무엇인지 추측한다. 그러나 다시, 나는 확신 할 수 없다. 그것은 내가 이해하는데 도움이되는 것이다. 미리 감사드립니다.

실제로.

DateDialogFragment.java

public static DateDialogFragment newInstance(Context context, DateDialogFragmentListener 
listener, int year, int month, int day) { 
    DateDialogFragment dialog = new DateDialogFragment(); 
    mContext = context; 
    mListener = listener; 
    mYear = year; 
    mMonth = month; 
    mDay = day; 
    Bundle args = new Bundle(); 
    args.putString("title", "Set Date"); 
    dialog.setArguments(args); 
    return dialog; 
} 

답변

3

당신은 newInstance(...) 방법에 너무 많은 인수를 전달 : 나는 또한뿐만 아니라 newInstance() 방법을 포함 할 수 있습니다 figue. sYear, sMonthsDay은 두 번이 아닌 한 번만 전달하십시오.

편집 동일한 간단한 이름을 가진 두 개의 클래스가 있지만 여기에는 클래스가 다르므로 다른 유형입니다. 올바른 클래스의 인스턴스를 전달하십시오.

DateDialogFragment frag = DateDialogFragment.newInstance(
    this, 
    new AddEventActivity.DateDialogFragmentListener() { 

     @Override 
     public void updateChangeDate(int year, int month, int day) { 
      // TODO Auto-generated method stub 

     } 
    }, sYear, sMonth, sDay); 

.. 또는 당신이 EditEventActivity.DateDialogFragmentListener을 통과해야하는 경우 newInstance() 방법의 서명을 수정합니다.

+0

죄송합니다. 죄송합니다. 방금 문제를 해결했지만 오류가 계속 지속됩니다. – Andy

+1

예외가 지금 무엇입니까? 주어진 Exception은 여전히 ​​너무 많은 인수를 전달하는이 경우를 정확하게 보여주는 예외입니다. –

+0

방금 ​​편집했습니다. 똑같은 것에서 3 개의 추가 ints를 뺀 것입니다. 죄송합니다. 자동으로 추가되었으므로주의하지 않아야합니다. – Andy

1

당신의 newInstance 방법은 청취자 후 3 개 int의 소요 EditEventActivity.DateDialogFragmentListenerAddEventActivity.DateDialogFragmentListener를 확장한다고 가정하면 6 개 int의를 전달하는 - 당신은 아마 의미 : 다시 편집에 따라

DateDialogFragment frag = DateDialogFragment.newInstance(this, new DateDialogFragmentListener() { 

     @Override 
     public void updateChangeDate(int year, int month, int day) { 
      // TODO Auto-generated method stub 

     } 
    }, sYear, sMonth, sDay); //removed the last 3 arguments 

편집
에 내 첫 코멘트 : EditEventActivity.DateDialogFragmentListenerAddEventActivity.DateDialogFragmentListener까지 확장됩니까?

+0

지적 해 주셔서 감사합니다. 방금 고쳤어. 그것은 거기에 있으면 안된다. 그것은 내가 눌렀을 때 자동으로 추가되었고 그 자체가 d로 채워졌습니다. 그러나 오류는 3 개의 잘못된 잘못된 'ints'를 뺀 것입니다. – Andy

+0

@Andy 내 편집을 참조하십시오. – assylias

+0

아니요. 그것은 단지 내부 클래스 인터페이스입니다. – Andy

관련 문제