2010-10-28 80 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