将项目导出到jar文件并将其导入到我的项目中时,findViewById返回null

时间:2014-01-02 14:13:17

标签: android xml null findviewbyid

我将第三方项目导出到jar文件并将此项目设置为库,然后将其导入到我的项目中。文件夹布局下的xml文件中的所有“@ + id”都已修改为“@id”。我添加了ids.xml&第三方项目中的public.xml文件。 Mainifest.xml也被添加。

在我的项目中,像it.setClass(this, ActivityImageDetail.class);这样的代码实际上遇到了ActivityImageDetail.class,这是jar文件中的第三方类。

但是当它执行layout = (LinearLayout) findViewById(R.id.***);时,我得到了Null。

Logcat说java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.mytest/com.MobileVisualSearch.ActivityImageDetail}: java.lang.NullPointerException

似乎第三方课程中的所有findViewById()都会返回null

我该如何解决?

2 个答案:

答案 0 :(得分:0)

可悲的是,您无法使用JAR文件来存储Android资源。生成的R.java将不包含JAR文件中的信息。

答案 1 :(得分:0)

您可以在以下行周围发布代码吗?

layout = (LinearLayout) findViewById(R.id.***);

在尝试从中获取特定ID之前,您是否对布局文件进行了充气?

我创建了一个小项目,它以下列方式使用库中的布局:

View view = inflater.inflate(R.layout.imported_layout, container, false);
TextView textView = (TextView) view.findViewById(R.id.imported_textview);

textView.setText("Hey, I'm an imported TextView");

并且imported_layout.xml只是一个非常简单的布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/imported_textview"
        android:layout_width="wrap_content"
        android:layout_height="match_parent" />

</LinearLayout>

编辑:这是可能的,因为我已经导入了库项目,但我没有将它用作导入的.jar。