Android中的布局[ID或字段无法解析]

时间:2011-01-24 09:51:40

标签: android

public class Page1 extends Activity {

    public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.welcome);
         final Button button = (Button) findViewById(R.id.welcome);
            button.setOnClickListener(new View.OnClickListener() {
                public void onClick(View view) {
                    Intent myIntent = null;
                        myIntent = new Intent(view.getContext(), Page1.class);
                    startActivity(myIntent);
                }
            });          
    }

}

我想从另一个名为welcome.xml的XML文件加载内容,但我收到错误welcome cannot be resolved or is not a field

这个Page1.java类是我的Android应用程序的下一个屏幕。

我的Welcome.xml

<Button android:text="@+id/Button01" android:id="@+id/welcome" 
android:layout_width="wrap_content" android:layout_height="wrap_content" 
xmlns:android="http://schemas.android.com/apk/res/android">
</Button>

6 个答案:

答案 0 :(得分:1)

您可以粘贴完整的xml文件并记录日志吗?我的第一个猜测是你有一个案例问题,你的布局文件名为“欢迎”,你有setContentView为“欢迎”。对于布局和控件也没有相同的名称,它会让人感到困惑。

答案 1 :(得分:1)

应该有效。

如果你没有设置处理程序,你会看到屏幕上的按钮吗?

文件实际命名为«* W * elcome.xml»?尝试删除大写字母(将其重命名为welcome.xml)。然后进行清理,重建并检查它是否现在有效......

答案 2 :(得分:1)

你正在犯愚蠢的错误:看到这个



public class Page1 extends Activity {

public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.welcome);
     final Button button = (Button) findViewById(**R.id.Button01**);//use id of button here not layout name

        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                Intent myIntent = null;
                    myIntent = new Intent(view.getContext(), Page1.class);
                startActivity(myIntent);
            }
        });          
}

}

答案 3 :(得分:1)

这就是你welcome.xml所拥有的吗?

您的按钮不在布局下。因此,布局文件本身将抛出异常。 其次,android:text不正确。您在那里填写的条目应该在android:id

之下

并且它不应该是:

final Button button = (Button) findViewById(R.id.welcome);

但:

final Button button = (Button) findViewById(R.id.Button01);

答案 4 :(得分:0)

Welcome.xml包含带有id welcome的Button,它不是setContentView的布局 视图可以是List,relative,absolute table等。您可以在其中添加按钮。

并检查文件名中的案例并指定R.layout。 *

使用linearlayout和一个按钮的示例xml文件。将其另存为welcome.xml

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

<Button
android:id="@+id/ButtonWelcome"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/button"
>
</Button>

</LinearLayout>
您的代码中的

public class Page1 extends Activity {

    public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.welcome);
         final Button button = (Button) findViewById(R.id.ButtonWelcome);
            button.setOnClickListener(new View.OnClickListener() {
                public void onClick(View view) {
                    Intent myIntent = null;

                **//You have called Page1.class again which is the name of this class //again** 
                        myIntent = new Intent(view.getContext(), Page1.class);
                    startActivity(myIntent);
                }
            });          
    }

}

类似地创建另一个活动,并将意图中的类标记为粗体的调用。

答案 5 :(得分:0)

您的Welcome.xml不完整,应该是这样的:

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

    <Button android:text="@+id/Button01" android:id="@+id/welcome" 
        android:layout_width="wrap_content" android:layout_height="wrap_content" 
        xmlns:android="http://schemas.android.com/apk/res/android">
    </Button>

</LinearLayout>

此外,如果您仍有问题,尝试清理您的项目,以便R.java更新为新的id值,如welcome id(R.id.welcome),因为如果R. java不包含welcome id,你会收到类似的错误。