2014-02-10 61 views
0

我試圖訪問該框中的editText ...我試圖爲它創建一個對象,但由於某種原因,它不工作,我真的很對Android來說是新的,所以對我來說有點困惑。EditText Android無法通過編號創建對象

package com.example.myfirstapp; 

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


public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     EditText txt = new (EditText) findViewByID(R.id.editText1); 

    } 

} 

這裏是XML

<EditText 
    android:id="@+id/editText1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 
    android:ems="10" 
    android:inputType="numberPassword" > 

    <requestFocus /> 
</EditText> 

我越來越對new和方法的語法錯誤是未定義findViewByID類型MainActivity

+0

「它不工作」什麼是不工作?你有錯誤嗎? – Codeman

+0

@ Pheonixblade9我把錯誤放在最後,如果你閱讀完整的東西...... –

回答

5

只需卸下new

EditText txt = (EditText) findViewById(R.id.editText1); 

這實際上是一個轉換,這意味着你告訴編譯器,findViewById返回的對象不僅是View,該方法被聲明返回,但View的一個特定的子類EditText

此行實際上並沒有創建新的View,而是從Activity的內容視圖中選擇View,您調用的內容視圖是setContentView()

您作爲函數參數傳遞的id用於標識要從內容視圖中選出的View

+0

只是爲了解釋,當你使用findViewByID bcs時,你不需要「新」對象已經在你的佈局中,所以有不需要創建EditText的實例... – GhostDerfel

+0

還在寫這個,但現在在我的答案。 –

+0

抱歉沒有看到您的編輯 – GhostDerfel

2

試試這個。

EditText txt = (EditText) findViewByID(R.id.editText1);