Intereting Posts
Откройте мою программу для Android после обновления Метод должен быть переопределен в , если он когда-либо называется «в Android Studio Какая лучшая инфраструктура разработки мобильных веб-приложений Что такое тег <view /> XML в макетах Android textview не поддерживает разрыв строки CardView layout_width = "match_parent" не соответствует родительской ширине RecyclerView Как получить доступные языки (не все из них, только языки, доступные в моем приложении) Javax.net.ssl.SSLPeerUnverifiedException: нет сертификата peer, пока я работаю с google place api в android Это ключевое слово в android AdvertisingIdClient getAdvertisingIdInfo висит навсегда Android ExceptionInInitializerError Causeed Невозможно определить типы записей в то время как новый HSSFWorkbook (inputStream) Невозможно называть defineVisibility () никогда не видел подключения для pid Android: оставляя приложение с кнопкой «домой» и возвращаясь к другому действию при длительном нажатии на кнопку «домой» Разберите JSON в дружественный вывод ListView Передача события прокрутки из скользящего вида в ScrollView – Раздвижная панель с ScrollView, например, Google Maps

GetActivity (). FindViewById (R.layout.contacts_list_view) возвращает null

Я видел подобный вопрос об этом, но все было по разным причинам (я думаю). Код, который я использую, взят из http://developer.android.com/training . Я пытаюсь создать простое приложение для контактов в соответствии с учебным пособием : http://developer.android.com/training/contacts-provider/retrieve-names.html Часть, где я получаю ошибку. Настройте CursorAdapter для ListView . Это мой код:

@Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); mContactsList = (ListView) getActivity().findViewById(R.layout.contacts_list_view); mCursorAdapter = new SimpleCursorAdapter(getActivity(), R.layout.contacts_list_item, null, FROM_COLUMNS, TO_COLUMN, 0); mContactsList.setAdapter(mCursorAdapter); mContactsList.setOnItemClickListener(this); getLoaderManager().initLoader(0, null, this); } 

Все XML-файлы были созданы:

contact_list_item.xml:

 <?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/text1" android:layout_width="match_parent" android:layout_height="wrap_content" android:clickable="true"/> 

contact_list_view.xml:

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

Моя основная деятельность состоит из 2-х FrameLayout для фрагментов, которые нужно вставить. Это XML:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <FrameLayout android:id="@+id/frag_contacts" android:layout_width="match_parent" android:layout_height="200dp" android:textColor="#0a20a3" > </FrameLayout> <FrameLayout android:id="@+id/frag_contact_details" android:layout_width="match_parent" android:layout_height="match_parent" android:textColor="#045011" /> </LinearLayout> 

Это onCreate деятельности:

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_ninth); if (findViewById(R.id.frag_contacts) != null) { if (savedInstanceState != null) return; ContactsFragment contactsFrag = new ContactsFragment(); getFragmentManager().beginTransaction().add(R.id.frag_contacts, contactsFrag).commit(); } } 

Кроме того, это onCreateView фрагмента:

 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.contacts_list_view, container, false); } 

Теперь, извините за длинный пост, некоторые из них могут быть ненужными, но проблема в том, что в первом фрагменте getActivity().findViewById(R.layout.contacts_list_view) возвращает значение null все время! Не знаю, что еще делать. Как еще я могу загрузить данные в список, и что здесь не так? Заранее спасибо!

Вы должны изменить

 mContactsList = (ListView) getActivity().findViewById(R.layout.contacts_list_view); 

с

 mContactsList = (ListView) getView().findViewById(R.id.contacts_list_view); 

Поскольку ListView принадлежит View, вы возвращаетесь внутри onCreateView.

Изменить это

 mContactsList = (ListView) getActivity().findViewById(R.layout.contacts_list_view); 

в

 mContactsList = (ListView) getView().findViewById(R.id.contacts_list_view); 

Редактировать:

 <ListView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+idlist" 

А также

  mContactsList = (ListView) getView().findViewById(R.id.list); 

замещать

 mContactsList = (ListView) getActivity().findViewById(R.layout.contacts_list_view); 

в

 mContactsList = (ListView) getView().findViewById(R.id.list); 

Contact_list_view.xml shoud изменить следующим образом

 <?xml version="1.0" encoding="utf-8"?> <ListView xmlns:android="http://schemas.android.com/apk/res/android" android:id="**@+id/list**" android:layout_width="match_parent" android:layout_height="match_parent"/> 

Если вы пытаетесь сделать getActivity (). FindViewById (R.id.contacts_list_view) в onCreateView, он вернет null, потому что View of Fragment еще не создан. Попробуйте сделать это в onResume, и он вернет представление:

 @Override public void onResume() { super.onResume(); mContactsList = (ListView) getActivity().findViewById(R.id.contacts_list_view); } 

Вам нужно подождать, пока Fragment будет прикреплен к Управлению. Вы можете сделать это onAttach(Activity) в своем классе Fragment