0

我使用图形编辑器中的“包含其他布局”向活动的主布局添加了几个小的相对布局。但是,由于某种原因,当我尝试在模拟器中加载活动时,它失败了。除了 LogCat 中的一堆通用内容之外,没有任何警告,这些内容看起来与我遇到错误时的任何其他内容完全相同。在此活动的 .Java 文件中,我成功地引用了这些包含的布局中的视图,没有任何问题。

这是 Activity 的 .xml 文件中包含布局的元素。

<include
    android:id="@+id/include1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/lblParklandAssistDesc"
    android:layout_below="@+id/lblParklandAssistDesc"
    layout="@layout/parklandweight" />

<include
    android:id="@+id/include2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/include1"
    android:layout_below="@+id/include1"
    layout="@layout/parklandbsa" />

这些是包含的布局

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

<Button
    android:id="@+id/btnWeightUp"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="55dp"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:text="@string/Up" />

<Button
    android:id="@+id/brnWeightDown"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="55dp"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/btnWeightUp"
    android:text="@string/Down" />

<TextView
    android:id="@+id/lblParklandWeightTitle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_toRightOf="@+id/btnWeightUp"
    android:text="@string/lblWeight"
    android:textAppearance="?android:attr/textAppearanceMedium" />

<EditText
    android:id="@+id/txtWeight"
    android:layout_width="55dp"
    android:layout_height="wrap_content"
    android:layout_below="@+id/lblParklandWeightTitle"
    android:layout_toRightOf="@+id/btnWeightUp"
    android:ems="10"
    android:inputType="number"
    android:text="100" >

    <requestFocus />
</EditText>

<RadioGroup
    android:id="@+id/radioGroup1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_toRightOf="@+id/lblParklandWeightTitle" >

    <RadioButton
        android:id="@+id/radio0"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:checked="true"
        android:text="@string/lb" />

    <RadioButton
        android:id="@+id/radio1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/kg" />
</RadioGroup>

</RelativeLayout>

然后是另一个。

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

<Button
    android:id="@+id/btnBSADown"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="55dp"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/btnBSAUp"
    android:layout_below="@+id/btnBSAUp"
    android:text="@string/Down" />

<TextView
    android:id="@+id/lblParklandBSAtitle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="58dp"
    android:text="@string/lblParklandBSAtitle"
    android:textAppearance="?android:attr/textAppearanceLarge" />

<Button
    android:id="@+id/btnBSAUp"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="55dp"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:text="@string/Up" />

<EditText
    android:id="@+id/txtBSA"
    android:layout_width="55dp"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/lblParklandBSAtitle"
    android:layout_below="@+id/lblParklandBSAtitle"
    android:ems="10"
    android:inputType="number"
    android:text="3" />

</RelativeLayout>

对于可能发生的事情,或者坦率地说,甚至在哪里看,我都没有最模糊的想法。我已经使用 eclipse 和 java 和 android 工作了将近两个星期,制作了一个应用程序,并且很幸运,并且很容易学习一切。这让我很困惑。任何帮助将不胜感激!

新添加(添加 .Java 内容,因为似乎 xml 布局本身可能不是问题):

在活动类的顶部,我声明了将处理其他布局的变量,如下所示:

View parklandWeight;
View parklandBSA;

然后,当我将对象分配给它时 - 我这样做:

parklandWeight = (View) findViewById(R.layout.parklandweight);
parklandBSA = (View) findViewById(R.layout.parklandbsa);

LogCat 中似乎来自此 activity.java 的唯一错误发生在第二次分配之后。在另一个指代其中一个布局内的按钮的分配上:

btnWeightUp = (Button) parklandWeight.findViewById(R.id.btnWeightUp);

这可能是我问题的根源吗?我已经在 StackOverflow 中阅读了至少五六个不同的线程,建议这样做。提前致谢。

4

2 回答 2

0

我试过这些代码运行完美......试试这些。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
tools:ignore="HardCodedText" >

<include
    android:id="@+id/include2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/include1"
    android:layout_alignParentTop="true"
    android:layout_below="@+id/include1"
    layout="@layout/top" />

<Button
    android:id="@+id/btnWeightUp"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="55dp"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/include2"
    android:text="Up" />

<Button
    android:id="@+id/brnWeightDown"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="55dp"
    android:layout_height="wrap_content"
    android:layout_below="@+id/btnWeightUp"
    android:text="Down" />

<TextView
    android:id="@+id/lblParklandWeightTitle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/include2"
    android:layout_toRightOf="@+id/btnWeightUp"
    android:text="lblWeight"
    android:textAppearance="?android:attr/textAppearanceMedium" />

<EditText
    android:id="@+id/txtWeight"
    android:layout_width="55dp"
    android:layout_height="wrap_content"
    android:layout_below="@+id/lblParklandWeightTitle"
    android:layout_toRightOf="@+id/btnWeightUp"
    android:ems="10"
    android:inputType="number"
    android:text="100" >

    <requestFocus />
</EditText>

<RadioGroup
    android:id="@+id/radioGroup1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/include2"
    android:layout_toRightOf="@+id/lblParklandWeightTitle" >

    <RadioButton
        android:id="@+id/radio0"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:checked="true"
        android:text="lb" />

    <RadioButton
        android:id="@+id/radio1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="kg" />
</RadioGroup>

</RelativeLayout>
于 2013-03-14T05:29:06.153 回答
0

我输入的布局变量错误。而不是使用

View layoutVariable;

我需要按如下所示的实际布局类型输入。

RelativeLayout parklandWeight;
RelativeLayout parklandBSA;

然后,当将实际布局对象分配给变量时,我当然应该将其键入为布局类型。但是,更重要的是,在 findViewById 方法中,我使用的是 R.layout.layout_id,而我应该使用 R.id.layout_id。我还指的是 xml 文件名,我应该指的是在 xml 文件的 include 标记中使用的相同 +id。这是我应该这样做的方式:

parklandWeight = (RelativeLayout) findViewById(R.id.include1);
parklandBSA = (RelativeLayout) findViewById(R.id.include2);

我希望这可以帮助遇到同样问题的任何 android 开发新手。我希望你们都有一个令人难以置信的一天!

于 2013-03-14T15:05:02.920 回答