2016-06-14 4 views
1

У меня действительно короткий вопрос. У меня есть xml-макет с кнопкой поиска и списком, а также для этого.findViewById (R.id.searchView), вызывающий исключение нулевой указатель java

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, он работает. Кто-нибудь думает, почему он не работает?

Благодаря

+1

Эта строка, в которой вы находите 'SearchView', не может дать вам' NullPointerException', потому что вы не используете указатель там. Это может дать вам нуль 'searchView', но не исключение. Пожалуйста, внимательно осмотрите стек. –

+0

Не могли бы вы отобразить импорт в SearchView? Его можно импортировать из библиотеки поддержки. Если это так, так и ваш 'XML'. Кроме того, разместите трассировку стека. – mbmc

+0

Ошибка была в основном 'android.widget.SearchView' не может быть передана' android.support.v7.widget.SearchView', поэтому я просто изменил импорт 'android.v7.widget.SearchView;' для импорта 'android.widget. SearchView; '. Но спасибо за вашу поддержку. –

ответ

0

Как и у всех, кто прокомментировал свой вопрос, линии, где вы пытаетесь найти SearchView не может дать вам NullPointerException, потому что вы не используете SearchView, что это нуль. findViewById() возвращает представление, если оно существует в макете, который вы указали в setContentView(), т. Е. Activity_main, иначе он возвращает null. Я хотел бы предложить вам сделать две вещи:

  • проверить, если макет, который содержит SearchView назван «activity_main»
  • место точка отладки на следующей строке, откуда вы найти SearchView
    и затем запустите свой инструмент для отладки, запустите свою деятельность, проверьте, есть ли у вас нулевой поиск. Если да, это может быть что-то, что связано с вашим именем макета. Если нет, попробуйте найти в другом месте в своем
    код, в котором вы получаете исключение нулевого указателя.
+1

Ошибка была в основном 'android.widget.SearchView' не может быть применена к' android.support.v7.widget.SearchView', поэтому я просто изменил импорт 'android.v7.widget.SearchView;' для импорта 'android.widget. SearchView; '. Но спасибо за вашу поддержку. –