尝试从库项目加载布局时Android应用程序崩溃

时间:2012-01-04 06:11:39

标签: android crash project

我有库项目说LibProj有一个布局文件common.xml,我有一个id为relativeLayout1的RelativeLayout。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/relativeLayout1"

在App Project Activity类中

public class AppStarter extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        RelativeLayout layout = (RelativeLayout) findViewById(R.id.relativeLayout1);
        setContentView(layout);

我在App项目中引用了库项目,eclipse IDE没有显示任何错误,但是当我在设备中运行项目时,应用程序崩溃了。 我不知道出了什么问题......?

5 个答案:

答案 0 :(得分:3)

我猜你必须使用LayoutInflater来扩展“common.xml”才能使用它并通过id找到它。

LayoutInflater inflater = (LayoutInflater)context.getSystemService
  (Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.common);

类似的东西,希望它有所帮助。

答案 1 :(得分:2)

setContentView(layout)中的

布局必须是xml文件名(例如R.layout.common)。

答案 2 :(得分:2)

您需要添加Android库项目的Java包名称

RelativeLayout v = (RelativeLayout) 
    findViewById(com.sample.library.R.id.relativeLayout1);

另一个问题是如果eclipse项目已经自动打开,则Library的R文件将被Projects R文件替换

解决方法:自动禁用构建并手动将库项目的资源文件复制到主项目中 - 在相应的文件夹中

enter image description here

答案 3 :(得分:1)

您需要在“ res ”文件夹中创建名为“ libs ”的文件夹,将库复制到“ libs ”文件夹

答案 4 :(得分:1)

我之前有同样的问题:原因是

1)当你做

RelativeLayout layout = (RelativeLayout) findViewById(R.id.relativeLayout1);

它不知道它应该从哪里调用你的relativeLayout1,因为它也可能与你的应用程序资源不匹配。在运行时分配ID。