2017-10-20 55 views
-4

我有這樣的代碼在Activity.java:的setText()無法正常工作

public void scan(View view){ 
    EditText text = (EditText) findViewById(R.id.editText3); 
    text.setText("asdas"); 
} 

,這在活動XML:

<Button 
    android:id="@+id/button" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:background="@color/colorPrimary" 
    android:onClick="scan" 
    android:text="Scane" 
    android:textColor="#fff" 
    android:layout_marginStart="8dp" 
    android:layout_marginEnd="8dp" 
    tools:layout_editor_absoluteY="271dp" 
    tools:layout_editor_absoluteX="8dp" /> 

<EditText 
    android:id="@+id/editText3" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:ems="10" 
    android:inputType="textPersonName" 
    android:text="Name" 
    tools:layout_editor_absoluteX="89dp" 
    tools:layout_editor_absoluteY="165dp" /> 

當點擊按鈕的應用程序崩潰與:

Attempt to invoke virtual method 'void 
android.widget.EditText.setText(java.lang.CharSequence)' on a null object reference 

爲什麼我使用Android Studio最新版本?

+0

EditText text =(EditText)view.findViewById(R.id.editText3);並檢查相同活動或其他編輯文本編號 – RejoylinLokeshwaran

回答

0

似乎findViewById返回null:即出於某種原因它找不到您的編輯文本。

也許你只需要重建項目:Build - Rebuild Project

否則你別的亂七八糟的東西,必須張貼更多信息

0

將這個EDITTEXT intialization代碼onCreate方法。

EditText text; 
protected void onCreate(Bundle savedInstanceState) { 
text = (EditText) findViewById(R.id.editText3); 
} 

public void scan(View view){ 
    text.setText("asdas"); 
} 
0

您的findViewById由於沒有上下文而返回null。 我認爲你通過view對象的上下文,但不使用它。 嘗試改變

EditText text = (EditText) findViewById(R.id.editText3); 

EditText text = (EditText) view.findViewById(R.id.editText3); 
0

在下面的代碼,你會得到相關的EditText對象

EditText text = (EditText) findViewById(R.id.editText3); 

然後,你叫那個對象的setText()方法,但需要空對象參考

text.setText("asdas"); 

這意味着您無法正確獲取EditText對象。因此,錯誤的來源從下面的行導致:

EditText text = (EditText) findViewById(R.id.editText3); 

請確保調用正確的上下文內掃描()方法。嘗試在onCreate()方法內調用它。如果您從其他位置調用findViewById()方法,請務必從正確的上下文中調用它。