我将第三方项目导出到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
。
我该如何解决?
答案 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。