Урок 104. Android 3. Fragments. Lifecycle

Обсуждение уроков
Аватара пользователя
alexmx
Сообщения: 193
Зарегистрирован: 10 мар 2014, 08:14

Re: Урок 104. Android 3. Fragments. Lifecycle

Сообщение alexmx » 21 апр 2014, 17:30

А говоришь пустая ссылка)))
Ладно буду дальше мучаться)))

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 104. Android 3. Fragments. Lifecycle

Сообщение Foenix » 21 апр 2014, 17:31

alexmx писал(а):
Глянь на аватарку у меня сейчас реально такая морда "откуда там выезжающая панель???")))
Это у меня на активити два фрагмента - один из них панель, она тоже со списком. Выезжает снизу. ХОрошая вещь.

А про контекст в фрагментах - ну это не для лоадеров характерно, а вообще для чего угодно
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
alexmx
Сообщения: 193
Зарегистрирован: 10 мар 2014, 08:14

Re: Урок 104. Android 3. Fragments. Lifecycle

Сообщение alexmx » 21 апр 2014, 17:32

8-) Окай Бос)))

Аватара пользователя
alexmx
Сообщения: 193
Зарегистрирован: 10 мар 2014, 08:14

Re: Урок 104. Android 3. Fragments. Lifecycle

Сообщение alexmx » 21 апр 2014, 17:50

Теперь ругается тут:
[syntax=java]public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);

String[] from = new String[] { CATALOG_NAME, NAME_STATUS };

adapter = new ScannerListCursorAdapter(getActivity(), R.layout.item, null, from, null);
lvData = (ListView) findViewById(R.id.lvData);
lvData.setAdapter(adapter);
getLoaderManager().initLoader(0, null, getActivity());

}[/syntax]
просит initLoader просит поменять на restartLoader, когда меняешь просит наоборот поменять :?:
Мол неприменим для аргументов

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 104. Android 3. Fragments. Lifecycle

Сообщение Foenix » 21 апр 2014, 18:00

Не знаю что ты там наворотил
но я пишу в onCreateView так
mCallbacks = this;
loaderManager = getActivity().getLoaderManager();
loaderManager.initLoader(LOADER_ID, null, mCallbacks);
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 104. Android 3. Fragments. Lifecycle

Сообщение Foenix » 21 апр 2014, 18:03

а ДО этого в том же методе
lstAdapterNom = new lstAdaptSpisokNom(getActivity().getBaseContext(),
R.layout.ххх, null, from, to, gestureListener,0);
затем адаптер
lvSpisok.setAdapter(lstAdapterNom);
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
alexmx
Сообщения: 193
Зарегистрирован: 10 мар 2014, 08:14

Re: Урок 104. Android 3. Fragments. Lifecycle

Сообщение alexmx » 21 апр 2014, 18:21

А вот моя беда с кусочком вашего счастья:
[syntax=java]package ru.myscanner.scannerth;

import android.app.ListFragment;
import android.app.LoaderManager;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.LoaderManager.LoaderCallbacks;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;



public class ListFragmentTenologi extends ListFragment implements LoaderCallbacks<Cursor> {

ScannerListCursorAdapter adapter;
LoaderManager loaderManager;


final static Uri CATALOG_URI = Uri.parse("content://ru.htsprovider.htspdata/catalogtable");
static final String CATALOG_NAME = "catalogname";
static final String NAME_STATUS = "nstatus";
ListView lvData;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
String[] from = new String[] { CATALOG_NAME, NAME_STATUS };
adapter = new ScannerListCursorAdapter(getActivity(), R.layout.item, null, from, null);
lvData.setAdapter(adapter);

loaderManager = getActivity().getLoaderManager();
loaderManager.initLoader(0, null, this);

return inflater.inflate(R.layout.list_fragment_tehnolodgi, null);
}


@Override
public Loader<Cursor> onCreateLoader(int id, Bundle bndl) {
return(new CursorLoader(getActivity(), CATALOG_URI, null, null, null, null));
}

@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
adapter.swapCursor(cursor);
}


@Override
public void onLoaderReset(Loader<Cursor> loader) {
adapter.swapCursor(null);
}




}
[/syntax]
с обратным вызовом какая то шляпа

Аватара пользователя
alexmx
Сообщения: 193
Зарегистрирован: 10 мар 2014, 08:14

Re: Урок 104. Android 3. Fragments. Lifecycle

Сообщение alexmx » 21 апр 2014, 18:57

не кушает он this

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 104. Android 3. Fragments. Lifecycle

Сообщение Foenix » 21 апр 2014, 18:58

говори понятнее, что опять не так? Просто мне каждую букву некогда рассматривать
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 104. Android 3. Fragments. Lifecycle

Сообщение Foenix » 21 апр 2014, 19:01

где не хочет this
onCreateLoader?

returnValue = new CursorLoader(this.getActivity(), uri, null, null, null, null);
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 104. Android 3. Fragments. Lifecycle

Сообщение Foenix » 21 апр 2014, 19:02

CATALOG_URI
это чему у тебя равно?
а, вижу.
Последний раз редактировалось Foenix 21 апр 2014, 19:03, всего редактировалось 1 раз.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
alexmx
Сообщения: 193
Зарегистрирован: 10 мар 2014, 08:14

Re: Урок 104. Android 3. Fragments. Lifecycle

Сообщение alexmx » 21 апр 2014, 19:02

Вот тут:
[syntax=java]loaderManager.initLoader(0, null, this);[/syntax]
просит изменить initLoader на restartLoader

Метод initLoader(int, Bundle, LoaderManager.LoaderCallbacks<D>) в типе LoaderManager неприменим для аргументов (int, null, ListFragmentTenologi)

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 104. Android 3. Fragments. Lifecycle

Сообщение Foenix » 21 апр 2014, 19:05

опиши нормально
private LoaderManager.LoaderCallbacks<Cursor> mCallbacks;
а затем присвой как у меня (не this, а как выше писала)
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
alexmx
Сообщения: 193
Зарегистрирован: 10 мар 2014, 08:14

Re: Урок 104. Android 3. Fragments. Lifecycle

Сообщение alexmx » 21 апр 2014, 19:12

Я так делал пришел к тому что в строке:
[syntax=java] mCallbacks = this;[/syntax]
подчеркивает this и ругается:
Несоответствие типов: невозможно преобразовать ListFragmentTenologi в LoaderManager.LoaderCallbacks<Cursor>

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 104. Android 3. Fragments. Lifecycle

Сообщение Foenix » 21 апр 2014, 19:16

да, у меня просто фрагмент, а не фрагмен-список
нужно подумать
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 104. Android 3. Fragments. Lifecycle

Сообщение Foenix » 21 апр 2014, 19:18

вот пример
http://docs.huihoo.com/android/3.0/reso ... oader.html
сиди сравнивай пока, что у тебя не так.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
alexmx
Сообщения: 193
Зарегистрирован: 10 мар 2014, 08:14

Re: Урок 104. Android 3. Fragments. Lifecycle

Сообщение alexmx » 22 апр 2014, 16:35

Вообще то мне без разницы просто фрагмент или лист фрагмент. Попробовал на простом фрагменте та же фигня.
[syntax=java]package ru.systemtehnolodgi.stav;


import android.app.Fragment;
import android.app.LoaderManager;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.LoaderManager.LoaderCallbacks;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import android.widget.TextView;

public class PlaceholderFragment extends Fragment implements LoaderCallbacks<Cursor> {

ScannerListCursorAdapter adapter;
LoaderManager loaderManager;
private LoaderManager.LoaderCallbacks<Cursor> mCallbacks;

final static Uri CATALOG_URI = Uri.parse("content://ru.htsprovider.htspdata/catalogtable");
static final String CATALOG_NAME = "catalogname";
static final String NAME_STATUS = "nstatus";
ListView lvData;
TextView textView;

public PlaceholderFragment() {
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {

String[] from = new String[] { CATALOG_NAME, NAME_STATUS };

adapter = new ScannerListCursorAdapter(getActivity(), R.layout.item, null, from, null);
lvData.setAdapter(adapter);

loaderManager = getActivity().getLoaderManager();
loaderManager.initLoader(0, null, mCallbacks);

View rootView = inflater.inflate(R.layout.list_fragment_tehnolodgi, container,
false);
return rootView;
}

@Override
public Loader<Cursor> onCreateLoader(int id, Bundle bndl) {
return(new CursorLoader(getActivity(), CATALOG_URI, null, null, null, null));
}

@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
adapter.swapCursor(cursor);
}


@Override
public void onLoaderReset(Loader<Cursor> loader) {
adapter.swapCursor(null);
}

}
[/syntax]
убрал строку mCallbacks = this, эклипс перестал ругаться но при запуске основное активити выкидывает:
04-22 15:04:20.267: E/AndroidRuntime(745): FATAL EXCEPTION: main
04-22 15:04:20.267: E/AndroidRuntime(745): java.lang.RuntimeException: Unable to start activity ComponentInfo{ru.systemtehnolodgi.stav/ru.systemtehnolodgi.stav.MainActivity}: android.view.InflateException: Binary XML file line #8: Error inflating class fragment
04-22 15:04:20.267: E/AndroidRuntime(745): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:680)
Я так понял не может этот фрагмент подключить

Аватара пользователя
alexmx
Сообщения: 193
Зарегистрирован: 10 мар 2014, 08:14

Re: Урок 104. Android 3. Fragments. Lifecycle

Сообщение alexmx » 22 апр 2014, 18:25

С раздуванием разобрался. Но теперь на адаптере null приходит:
04-22 15:17:02.356: E/AndroidRuntime(886): FATAL EXCEPTION: main
04-22 15:17:02.356: E/AndroidRuntime(886): java.lang.RuntimeException: Unable to start activity ComponentInfo{ru.systemtehnolodgi.stav/ru.systemtehnolodgi.stav.MainActivity}: java.lang.NullPointerException
04-22 15:17:02.356: E/AndroidRuntime(886): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
04-22 15:17:02.356: E/AndroidRuntime(886): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
04-22 15:17:02.356: E/AndroidRuntime(886): at android.app.ActivityThread.access$600(ActivityThread.java:130)
04-22 15:17:02.356: E/AndroidRuntime(886): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
04-22 15:17:02.356: E/AndroidRuntime(886): at android.os.Handler.dispatchMessage(Handler.java:99)
04-22 15:17:02.356: E/AndroidRuntime(886): at android.os.Looper.loop(Looper.java:137)
04-22 15:17:02.356: E/AndroidRuntime(886): at android.app.ActivityThread.main(ActivityThread.java:4745)
04-22 15:17:02.356: E/AndroidRuntime(886): at java.lang.reflect.Method.invokeNative(Native Method)
04-22 15:17:02.356: E/AndroidRuntime(886): at java.lang.reflect.Method.invoke(Method.java:511)
04-22 15:17:02.356: E/AndroidRuntime(886): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
04-22 15:17:02.356: E/AndroidRuntime(886): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
04-22 15:17:02.356: E/AndroidRuntime(886): at dalvik.system.NativeStart.main(Native Method)
04-22 15:17:02.356: E/AndroidRuntime(886): Caused by: java.lang.NullPointerException
04-22 15:17:02.356: E/AndroidRuntime(886): at ru.systemtehnolodgi.stav.PlaceholderFragment.onCreateView(PlaceholderFragment.java:40)
04-22 15:17:02.356: E/AndroidRuntime(886): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:829)
04-22 15:17:02.356: E/AndroidRuntime(886): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1035)
04-22 15:17:02.356: E/AndroidRuntime(886): at android.app.BackStackRecord.run(BackStackRecord.java:635)
04-22 15:17:02.356: E/AndroidRuntime(886): at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1397)
04-22 15:17:02.356: E/AndroidRuntime(886): at android.app.Activity.performStart(Activity.java:5017)
04-22 15:17:02.356: E/AndroidRuntime(886): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2032)

Аватара пользователя
alexmx
Сообщения: 193
Зарегистрирован: 10 мар 2014, 08:14

Re: Урок 104. Android 3. Fragments. Lifecycle

Сообщение alexmx » 22 апр 2014, 18:34

Ооооо а куда данные из адаптера вставляются?

Это ведь в фрагменте не работает:
lvData = (ListView) findViewById(R.id.lvData);

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 104. Android 3. Fragments. Lifecycle

Сообщение Foenix » 22 апр 2014, 22:28

Пересмотри импорты. Фрагмент, лоадер - все это должно юзать саппорт либу
import android.app.Fragment;
import android.app.LoaderManager;
это исправь, нельзя смешивать две либы
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Ответить