나는 이런 종류의 자바 소스 코드를 Listener와 함께 가지고있다.스칼라에 대한 Java Listener 인터페이스
public static class FragmentA extends ListFragment {
OnArticleSelectedListener mListener;
...
// Container Activity must implement this interface
public interface OnArticleSelectedListener {
public void onArticleSelected(int position);
}
...
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
mListener = (OnArticleSelectedListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(
"Activity must implement OnArticleSelectedListener");
}
}
...
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
// Send the event to the host activity
mListener.onArticleSelected(position);
}
}
는 그리고 나는이 방법으로 그것을 구현 :
public class MyActivity implements FragmentA.OnArticleSelectedListener {
...
@Override
public void onArticleSelected(int pos) {
// do something
}
}
그래서, 지금은 스칼라로 변환 할 수 있습니다. 나는 특성을 사용해야한다고 생각합니다. [이 해결 :이 클래스에서 그 not found: value OnArticleSelectedListener
onAttach
에 오류] : 활동에서
class FragmentA extends ListFragment {
var mListener: OnArticleSelectedListener = null
...
trait OnArticleSelectedListener {
def onArticleSelected(position: Int)
}
...
override def onAttach(activity: Activity) {
super.onAttach(activity)
mListener = (OnArticleSelectedListener) activity;
}
...
override def onListItemClick(l: ListView, v: View, position: Int, id: Long) {
// Send the event to the host activity
mListener.onArticleSelected(position);
}
}
, 나는 특성을 "실행"하는 방법을 모르겠어요. 키워드가 "함께"있지만, extends ... with FragmentA.OnArticleSelectedListener
및 extends ... with OnArticleSelectedListener
은 not found: type FragmentA
또는 not found: type OnArticleSelectedListener
이라는 오류를 표시합니다.
누구나이 문제를 해결하는 방법은?
내가 써야했다 오류가 발생합니다 :''형식 불일치; 발견 : android.app.Activity required : FragmentA.this.OnArticleSelectedListener'' – Tim
잘못된 '활동'을 가져 왔을 수 있습니다. – yakshaver
네, 처음에는''MyActivity''를 끝내야 만했지만,이 특성을 올바르게 구현하고 처리하는 방법을 모르겠습니다. Java에서는''FragmentA.OnArticleSelectedListener'를 구현하고 메소드를 재정의 할 수 있습니다. 스칼라에서? – Tim