私はLinearLayoutを拡張するクラスを持っています。そのクラスには、クリックイベントをリスンするためにインスタンスを生成するフラグメントによって実装されるインタフェースがあります。私の問題は、LinearLayoutクラスでは、コールバックオブジェクトをインスタンス化する方法がわかりません。ClassCastExceptionインターフェイスオブジェクトをインスタンス化するとき
public class SelectionView extends LinearLayout {
OnSelectionClickedListener mCallback;
LinearLayout mSelection;
public interface OnSelectionClickedListener {
void onSelected(SelectionView view);
}
public SelectionView (Context context) {
super(context);
}
public void init() {
LayoutInflater inflater = LayoutInflater.from(getContext());
final LinearLayout viewGroup = (LinearLayout) inflater.inflate(R.layout.selection, this);
mSelection = (LinearLayout) viewGroup.findViewById(R.id.selection_container);
mCallback = (SelectionClickedListener) this;
// ...
}
私が手にエラーが非常に最後の行にある:java.lang.ClassCastExceptionが::
によって引き起こさ com.mysite.myapp.SelectionViewは com.mysiteにキャストすることはできません。私が代わりに
this
のいくつかの他のContext
オブジェクトを試みたが、私はいつもにいくつかのバリエーションを持っている
myapp.SelectionView $ OnSelectionClickedListener 0エラー。これを訂正するために私は何をする必要がありますか?ありがとう。
ありがとうございます。非常に役に立ちます。私はこれを実装しようとしているつもりです。あなたが気にしないなら、私のOPの編集を見ることができますか?再度、感謝します! (素晴らしい本、btw)。 – Alex
@Alex:エラーメッセージがコードと一致しません。これは 'OnSportSelectionClickedListener'(表示しない)と' OnClickListener'(おそらく 'View.OnClickListener'ですが、ここでは使用していないようです)を参照しています。このクラッシュは編集中のコードからのものですか?また、親切な言葉をありがとう! – CommonsWare
申し訳ありませんが、それは 'OnSelectionClickedListener'と言っているはずです。はい、それは私が投稿したコードからです(しかし、少し残っていますが、ここで重要なことは何もありません)。私はそれについてもう少し考える必要があると思う。再度、感謝します。 – Alex