将AdView添加到LinearLayout时,Android AdMob AIR本机扩展崩溃
我正在创建一个AIR本机扩展来集成AdMob 我遵循了此处介绍的使用外部资源的指导原则: 并将google的adMob jar打包到我的本机扩展jar中,如下所述: 我有一个NewAdFunction类,它实现了FREFunction,并由actionscript端调用。NewAdFunction.call函数基本上包含以下内容:在我的实际代码中,我有必要的try捕获将AdView添加到LinearLayout时,Android AdMob AIR本机扩展崩溃,android,flash,admob,android-resources,air-native-extension,Android,Flash,Admob,Android Resources,Air Native Extension,我正在创建一个AIR本机扩展来集成AdMob 我遵循了此处介绍的使用外部资源的指导原则: 并将google的adMob jar打包到我的本机扩展jar中,如下所述: 我有一个NewAdFunction类,它实现了FREFunction,并由actionscript端调用。NewAdFunction.call函数基本上包含以下内容:在我的实际代码中,我有必要的try捕获 Intent intent = new Intent(context.getActivity(), AdMobActivity.
Intent intent = new Intent(context.getActivity(), AdMobActivity.class);
layoutID = context.getResourceId("layout.adlayout");
intent.putExtra("layoutID", layoutID);
context.getActivity().startActivity(intent);
在上面的代码中,adlayout是位于res/layout中的xml。我将整个res文件夹打包到最后一个jar中,并在testair项目的xml中包含以下代码
<application android:enabled="true" android:debuggable="true">
<activity android:name="com.mycompany.admob.AdMobActivity"></activity>
</application>
我所能想到的就是layout可以为null,但我添加了一个跟踪函数,它不是null。我发现layout变量实际上是null。我没有使用xml创建布局,而是以编程方式创建布局,如下所示:
public FREObject call(FREContext context, FREObject[] args) {
AdView adView = new AdView(context.getActivity(), AdSize.BANNER, NewAdFunction.developerId);
Activity activity = context.getActivity();
ViewGroup viewGroup = (ViewGroup)activity.findViewById(android.R.id.content);
viewGroup = (ViewGroup)viewGroup.getChildAt(0);
LinearLayout layout = new LinearLayout(activity);
viewGroup.addView(layout, new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
adView.setVisibility(View.VISIBLE);
layout.addView(adView, params);
}
这是我发现的在AIR本机扩展中添加视图的最佳方法
public FREObject call(FREContext context, FREObject[] args) {
AdView adView = new AdView(context.getActivity(), AdSize.BANNER, NewAdFunction.developerId);
Activity activity = context.getActivity();
ViewGroup viewGroup = (ViewGroup)activity.findViewById(android.R.id.content);
viewGroup = (ViewGroup)viewGroup.getChildAt(0);
LinearLayout layout = new LinearLayout(activity);
viewGroup.addView(layout, new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
adView.setVisibility(View.VISIBLE);
layout.addView(adView, params);
}