私はリスナーを備えたこの種のJavaソースコードを持っています。
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
}
}
それで、今はそれをScalaに変換したいと思います。私は、特性を使用する必要があると思います。[解決済み:このクラスでは、エラーが発生しますonAttach
] not found: value OnArticleSelectedListener
:
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);
}
}
アクティビティでは、トレイトを「実装」する方法がわかりません。キーワードが「with」であることは知っていますが、エラーまたは。がextends ... with FragmentA.OnArticleSelectedListener
表示extends ... with OnArticleSelectedListener
されnot found: type FragmentA
ますnot found: type OnArticleSelectedListener
。
この問題を解決する方法を考えている人はいますか?