2010-10-28 78 views
1

我是Android编程的新手。我有一个程序,看起来像这样:main.xml中的访问变量

这里是主要的Java模块:

public class MyAndroid extends Activity { 
    private EditText input1; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     mContext = this; 
     setContentView(R.layout.main); 
     input1 = (EditText) findViewById(R.id.input1); 
} 

这是我的main.xml文件看起来像:

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

<EditText android:id="@+id/input1" android:layout_width="160px" 
    android:layout_height="wrap_content" android:textSize="18sp" 

    android:numeric = "decimal|signed" 
    android:layout_x="8px" android:layout_y="13px"> 
</EditText> 

</AbsoluteLayout> 

不过,我收到错误信息:

R.id.input1无法解析。为什么我无法从main.xml访问'input1'?

我环顾四周,并没有找到答案。

感谢

+0

请正确格式化代码,但选择它并按下CTRL + K。 – EboMike 2010-10-28 22:59:50

+0

至于你的问题 - 它*应该*工作。你看到R.Java中的input1吗? – EboMike 2010-10-28 23:00:47

+0

你的代码看起来没问题。如果您使用的是Eclipse,是否尝试“清理”该项目,重新构建它,或者甚至在没有其他操作的情况下重新启动Eclipse。 – 2010-10-28 23:02:13

回答

2

时,而不是导入专用R类别的android.R类已导入最有可能出现此问题。

+0

但是然后R.layout.main不会被发现...或者主要也存在于android.R中,...不知道 – 2010-10-28 23:04:15

+0

你不'由于它在你的主应用程序包中,因此需要导入R. android.R与你的.package.R不同,它不会起作用 – Falmarri 2010-10-28 23:35:01

+0

看不见太多的代码。应该有一个'MyAndroid.java'的包名,并且在* R.java *中应该有一个包名。他们需要在同一个包中;或者MyAndroid.java需要从任何地方导入R.没有显示进口申报。确保导入不会隐藏任何需要的符号。 – frayser 2010-10-28 23:49:31

0

那么在你的代码中有两个错误,你需要在最后一个括号,mContext = this;应该是Context mContext = this;,但你甚至不需要那条线。我能看到的就是这些。除此之外,它应该按预期工作。

编辑:我在这里假设没什么区别在于你是一个绝对的初学者,在这种情况下,你所要做的应该正是这样,从开始到结束(你的main.xml是罚款):

package com.myandroid; // This line may be different depending on what you named your package when you created the project. 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.EditText; 

public class MyAndroid extends Activity { 
    private EditText input1; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState);   
     setContentView(R.layout.main); 
     input1 = (EditText) findViewById(R.id.input1); 
    } 
} 
+0

他可能在类的上下文mContext中,在代码中省略了它 - 因为它被称为mContext,看起来很可能。奇怪 - 但你为什么会有一个基本上只包含'this'的成员变量?! – EboMike 2010-10-28 23:51:51