0

android : onClick 특성을 AutoCompleteTextView에 할당 할 때마다 내 응용 프로그램이 작업로드시 즉시 충돌합니다. onClick 메서드를 할당하지 않고 AutoCompleteTextView를 테스트 한 결과, 다른 뷰 (EditText, Spinners, TextViews, Buttons 및 ImageButtons 포함)에 onClick을 할당하는 것처럼 잘 작동하는 것 같습니다. 나는 특별히 24 줄로 오류를 좁히는 데 성공했다. (setContentView (R.layout.activity_main)). 누구든지 이것에 대해 밝힐 수 있습니까?NullPointerException을 제공하는 AutoCompleteTextView에 OnClickListener를 할당하는 이유는 무엇입니까?

MainActivity.java

package com.example.matt.testapp; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.AutoCompleteTextView; 

public class MainActivity extends AppCompatActivity { 
    public AutoCompleteTextView actv; 
    public String[] continents = {"North America", 
      "South America", 
      "Antarctica", 
      "Europe", 
      "Africa", 
      "Asia", 
      "Australia" 
    }; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     actv = (AutoCompleteTextView) findViewById(R.id.actv); 
     ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, continents); 
     actv.setAdapter(adapter); 
    } 

    public void actvClick (View view) {} 
} 

activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_height="match_parent" 
    android:layout_width="match_parent" > 

    <AutoCompleteTextView 
     android:id="@+id/actv" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:onClick="actvClick" > 
    </AutoCompleteTextView> 
</LinearLayout> 

로그 캣

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.matt.testapp/com.example.matt.testapp.MainActivity}: android.view.InflateException: Binary XML file line #7: Binary XML file line #7: Error inflating class AutoCompleteTextView 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2817) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892) 
at android.app.ActivityThread.-wrap11(Unknown Source:0) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593) 
at android.os.Handler.dispatchMessage(Handler.java:105) 
at android.os.Looper.loop(Looper.java:164) 
at android.app.ActivityThread.main(ActivityThread.java:6541) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) 
Caused by: android.view.InflateException: Binary XML file line #7: Binary XML file line #7: Error inflating class AutoCompleteTextView 
Caused by: android.view.InflateException: Binary XML file line #7: Error inflating class AutoCompleteTextView 
Caused by: java.lang.NullPointerException: Attempt to write to field 'android.view.View$OnClickListener android.widget.AutoCompleteTextView$PassThroughClickListener.mWrapped' on a null object reference 
at android.widget.AutoCompleteTextView$PassThroughClickListener.-set0(Unknown Source:0) 
at android.widget.AutoCompleteTextView.setOnClickListener(AutoCompleteTextView.java:307) 
at android.view.View.<init>(View.java:5008) 
at android.widget.TextView.<init>(TextView.java:824) 
at android.widget.EditText.<init>(EditText.java:88) 
at android.widget.AutoCompleteTextView.<init>(AutoCompleteTextView.java:220) 
at android.widget.AutoCompleteTextView.<init>(AutoCompleteTextView.java:193) 
at android.widget.AutoCompleteTextView.<init>(AutoCompleteTextView.java:172) 
at android.support.v7.widget.AppCompatAutoCompleteTextView.<init>(AppCompatAutoCompleteTextView.java:68) 
at android.support.v7.widget.AppCompatAutoCompleteTextView.<init>(AppCompatAutoCompleteTextView.java:64) 
at android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:130) 
at android.support.v7.app.AppCompatDelegateImplV9.createView(AppCompatDelegateImplV9.java:1026) 
at android.support.v7.app.AppCompatDelegateImplV9.onCreateView(AppCompatDelegateImplV9.java:1083) 
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:772) 
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) 
at android.view.LayoutInflater.rInflate(LayoutInflater.java:863) 
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:515) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:374) 
at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:289) 
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139) 
at com.example.matt.testapp.MainActivity.onCreate(MainActivity.java:24) 
at android.app.Activity.performCreate(Activity.java:6975) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1213) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2770) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892) 
at android.app.ActivityThread.-wrap11(Unknown Source:0) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593) 
at android.os.Handler.dispatchMessage(Handler.java:105) 
at android.os.Looper.loop(Looper.java:164) 
at android.app.ActivityThread.main(ActivityThread.java:6541) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) 
+2

[NullPointerException이란 무엇이며 어떻게 수정합니까?] (https://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix -it) –

+2

유권자를위한주의 사항 : OP 코드에는 있지만 플랫폼 코드에는 NPE가 아닙니다. 런 다운 및 버그 신고에 대해 감사합니다. – laalto

답변

0

이 L ooks는 AutoCompleteTextView의 버그가되고 싶습니다. 어떻게됩니까

: XML을 팽창

  1. AutoCompleteTextView 생성자를 호출, 그리고 View 생성자를 호출합니다.
  2. View 생성자는 onClick 속성을보고 setOnClickListener()을 호출합니다.
  3. 은 내부 mPassThroughClickListener 필드에 쓰는 setOnClickListener()을 재정의했습니다. AutoCompleteTextView 생성자 끝에서만 초기화되며이 초기화 코드는 아직 실행되지 않았습니다. Reference

그것을 해결하려면 XML에서 onClick attrtibute를 제거하고 코드에서 프로그래밍 setOnClickListener()를 호출합니다.

Android 문제 추적기에이 문제에 대해 bug을 제출했습니다.

+0

내 TestApp에서 setOnClickListener를 프로그래밍 방식으로 테스트했을 때 문제없이 실행되었습니다. 그에 따라 내 질문을 수정하겠습니다. – beige