Adobe Native Extension Android布局xml无法访问

时间:2012-11-27 14:08:14

标签: android adobe air-native-extension

为Android构建原生扩展,我正在尝试集成google mapview,当我尝试从布局中访问属性时,它可以很好地运行。错误出现在扩展mapview的activity-class中:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    //Remove title bar
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);

    setContentView(R.layout.activity_map);

    mapView = (MapView)findViewById(R.id.mapview);
    mapView.setBuiltInZoomControls(true); // <- this crashes, same for textview etc.

加载的xml如下所示:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"  >

<TextView
    android:id="@+id/textfield1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="0dp"
    android:text="@string/hello_world"
    android:textColor="#ff0000"  />

<com.google.android.maps.MapView 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mapview"
    android:layout_width="300dp"
    android:layout_height="300dp"
    android:clickable="true" 
    android:apiKey="0cy94dNyuBcfF0aNZhB_JKpF4dQtxgDWhCXppRw" />

<Button
    android:id="@+id/button_clear"
    android:layout_marginTop="20dp"
    android:layout_marginLeft="20dp"
    android:layout_width="100dp"
    android:layout_height="40dp"
    android:background="@android:color/black"
    android:text="@string/clear"
    android:textColor="@android:color/white" />

<Button
    android:id="@+id/button_add"
    android:layout_marginTop="20dp"
    android:layout_marginLeft="20dp"
    android:layout_width="100dp"
    android:layout_height="40dp"
    android:background="@android:color/black"
    android:text="@string/add"
    android:textColor="@android:color/white" />

到目前为止我找到并检查了什么:

  • 扩展名已正确加载,因为xml布局中的地图视图已正确显示
  • res-folder被复制并编译到ANE(解压缩检查)以及APK(解压缩检查)
  • 所有布局元素都存在问题,应用程序也会在访问textview时崩溃。所以这不是地图特定的问题
  • 项目在独立运行时工作正常,所以它必须与扩展
  • 有关

我已经阅读了一些关于使用getRessourceId的帖子,但这意味着需要将FREContext注入到活动中,这听起来很奇怪。

任何提示真的很感激! Thanx,M。

1 个答案:

答案 0 :(得分:1)

想出第一部分。实际上,您在活动中有一个静态FREContext。在您的扩展功能中,使用一个设置此上下文,您将获得:

    @Override
    public FREObject call(FREContext context, FREObject[] args) {

         MyActivity.freContext = context;

在您的活动中,您可以通过它的resourceId:

设置布局
    setContentView( freContext.getResourceId("layout.my_layout_xml"));

希望这有助于某人。