0

質問:

これは私の状況です:

public class customView extends View {
    myView = new RelativeLayout(...);
    //...
    public customView getLayout() {
        return (customView) myView;
    }

    public void myFunction(){}
}

次に、私が行う場合:

customView cv = new customView();
cv.setId(100);
// mainLayout si riferisce alla View principale
mainLayout.addView(cv.getLayout());

以前に作成した新しい「customView」を取得しようとした瞬間に ClassCastException が返されます。

( (custonView) mainLayout.findViewById(100) ).myFunction();

customView で RelativeLayout をキャストできないと書かれています

私の customView rappresent は、いくつかの新しい機能を備えた RelativeLayout です。作成すると、TextView 埋め込みでタイマーが開始されます。

オブジェクトをリコールすると、タイマー タイマーを停止できるはずです (タイマー停止関数が記述され、完全に機能します)。

みんなありがとう

答え:

public class customView extends View {
    public void customView(Context context){
        myView = new RelativeLayout(...);
        **addView(myView);**
    }
    //...
    //public customView getLayout() {
    //    return (customView) myView;
    //}

    public void myFunction(){}
}

そしてそれを呼び出す

customView cv = new customView();
cv.setId(100);
//mainLayout si riferisce alla View principale
//mainLayout.addView(cv.getLayout());
mainLayout.addView(cv);
4

1 に答える 1

0

RelativeLayoutカスタムクラスで拡張できるはずです。それはあなたにとってすべてをより簡単にしてくれませんか?カスタム ロジックを追加することもできます。

あなたのコードの問題は、あなたが に を追加しRelativeLayoutmainLayout独自の を追加していないことだと思いますcustomView

于 2013-09-30T21:35:16.257 に答える