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();

确实有效并返回您的主要活动的实例,所以这不是问题。

最后,我无法弄清楚为什么从主活动向根科尔多瓦布局添加另一个视图有效,但当我在插件中这样做时却没有,所以我所做的是从活动 onCreate() 中创建我的视图然后我将视图类的访问器提供给我的插件并从那里开始工作。

于 2013-01-30T08:40:06.307 回答
0

完成后布局不再存在init()。最后发生的事情init()setContentView()用布局调用。当setContentView()使用布局调用时,布局会膨胀,并且布局中的各个视图会添加到活动中。

于 2014-04-17T21:50:50.100 回答