3

現在、アプリケーションの現在の LinearLayout にビューを追加しようとするプラグインを作成しています。

プラグイン内からリニア レイアウトにアクセスするのに苦労していますが、メイン アクティビティ内で次のようにすれば、ビューを追加できます。

MyView view = new MyView(this);
root.addView(myView);

しかし、プラグインでルート LinearLayout を取得するには、次のように仮定しました。

this.cordova.getActivity();

は私の主な活動であり、それを私の主な活動の型にキャストしようとしており、追加した関数を呼び出して、ルート LinearLayout オブジェクトを次のように返します。

MyActivity myAct = (MyActivity)this.cordova.getActivity();

MyView view = new MyView(myAct);
myAct .GetLinearLayout().addView(view);

これは機能していないようですが、理由を理解するのに役立つエラーなどは表示されませんか?

レイアウトにアクセスしてビューを追加する方法を知っている人はいますか?

4

2 に答える 2

1

わかりましたので、上記でやろうとしていたこととは少し異なる方法でこれを解決しました。

最初に、cordova によって返されたアクティビティをキャストします。

MyActivity myAct = (MyActivity)this.cordova.getActivity();

実際に機能し、メイン アクティビティのインスタンスを返すので、それは問題ではありませんでした。

最後に、メイン アクティビティからルート コルドバ レイアウトに別のビューを追加する理由がわかりませんでした。ビュークラスへのアクセサーをプラグインに戻し、そこから作業しました。

于 2013-01-30T08:40:06.307 に答える
0

完了後、レイアウトは存在しなくなりますinit()。で最後に行われるのは、レイアウトで呼び出されることですinit()setContentView()setContentView()レイアウトで呼び出されると、レイアウトが拡張され、レイアウト内の個々のビューがアクティビティに追加されます。

于 2014-04-17T21:50:50.100 に答える