2016-06-14 5 views
1

정말 짧은 질문이 있습니다. 검색 단추와 목록 뷰가있는 xml 레이아웃과이를위한 활동이 있습니다.findViewById (R.id.searchView) 자바 널 포인터 예외 발생

XLM :

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin"> 

    <SearchView android:id="@+id/searchView" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"/> 

    <ListView android:id="@+id/locationList" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1"> 
    </ListView> 

</LinearLayout> 

활동

public class MainActivity extends AppCompatActivity implements SearchView.OnQueryTextListener { 

    private SearchView searchView; 
    private ListView locationListView; 

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

     searchView = (SearchView) findViewById(R.id.searchView); 
     locationListView = (ListView) findViewById(R.id.locationList); 
    } 

라인 searchView = (SearchView) findViewById(R.id.searchView);은 단순히 널 포인터 예외를 제공합니다. 나는 그것을 EditText으로 바꾸기 위해 점검했다. 왜 그것이 작동하지 않는지 누구 아이디어?

감사합니다 당신이 null의 searchview를 사용하지 않을 때문에, 귀하의 질문에, 당신은 당신에게 NullPointerException이 줄 수없는 searchview을 찾기 위해 노력하고있는 라인에 댓글을 모든 사람처럼

+1

'SearchView '를 발견 한이 줄은 거기에 포인터를 사용하지 않아서 당신에게'NullPointerException'을 줄 수 없습니다. 그것은 당신에게 null을'searchView' 줄 수 있지만 예외는 아닙니다. stacktrace를주의 깊게보십시오. –

+0

활동에'SearchView' 가져 오기를 보여줄 수 있습니까? 지원 라이브러리에서 가져올 수 있습니다. 그렇다면'XML'도 마찬가지입니다. 또한 스택 추적을 게시하십시오. – mbmc

+0

기본적으로 'android.widget.SearchView' 오류는'android.support.v7.widget.SearchView'로 캐스팅 될 수 없으므로'android.v7.widget.SearchView; 가져 오기를 변경하여 android.widget을 가져옵니다. SearchView;'. 그러나 당신의 지원에 감사드립니다. –

답변

0

. findViewById()setContentView()에 제공된 레이아웃 (예 : activity_main)에 뷰가 있으면 null을 반환하고, 그렇지 않으면 null을 반환합니다. 내가 두 가지 일을 수행 할 제안 :

  • 확인 searchview가 포함 된 레이아웃이
  • 장소 "activity_main"라는 경우가 searchview을 찾을 수있는 곳에서 다음 줄에 디버그 포인트
    및 그런 다음 디버그 도구를 실행하고 활동을 시작한 다음 null searchview가 있는지 확인하십시오. 그렇다면 레이아웃 이름과 관련이있을 수 있습니다. 그렇지 않다면 널 포인터 예외가 발생하는
    코드를 다른 곳에서 검색하십시오.
+1

오류는 기본적으로'android.widget.SearchView'를'android.support.v7.widget.SearchView'로 변환 할 수 없으므로'android.v7.widget.SearchView; 가져 오기를 변경하여 android.widget을 가져 왔습니다. SearchView;'. 그러나 당신의 지원에 감사드립니다. –