Loadercallbacks.onloadfinired не вызывается, когда погрузчик ограничивается и содержит данныеJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Loadercallbacks.onloadfinired не вызывается, когда погрузчик ограничивается и содержит данные

Сообщение Anonymous »

У меня есть 1 активность и 2 фрагмента. Оба фрагмента используют пользовательский Asynctaskloader для получения некоторых данных от веб-сервиса, и, поскольку я использую загрузчик, он должен держать данные в разных действиях и повторных вариантах фрагментов. Оба фрагмента переопределяют метод OnActivity -Create, и вызовы GetLoaderManager (). Initulloger (0, null, это), который либо создает новый или повторный использование существующего загрузчика. У меня есть кнопка, которая заменяет фрагмент № 1 на фрагмент № 2 на щелчке, а фрагмент № 1 выдвигается на фрагмент. Когда пользователь попадает в обратную клавишу, он переключается на фрагмент № 1. < /P>
OnActivityCreated снова вызывается на фрагменте № 1, а затем, очевидно, снова вызывает iniloader (). На этот раз данные уже существуют в загрузке, и я ожидаю, что они снова будут автоматически вызвать метод loadercallbacks.onloadfinefine, потому что он уже имел доступные данные, как описано здесь. Если погрузчик еще не существует, он создается и (если в настоящее время начинается активность/фрагмент) запускает погрузчик. В противном случае последний созданный загрузчик повторно используется. , если в точке вызова, абонент находится в своем запущенном состоянии, и запрашиваемый погрузчик уже существует и сгенерировал свои данные, затем обратный вызов на загрузке (Loader, D) будет называться немедленно (внутри этой функции), поэтому вы должны быть подготовлены к этому. Доставьте. Получил Back Key < /li>
Пользователь теперь снова смотрит на Fragment1, но нет данных. (Это означает, что мне нужно снова получить его от веб -сервиса - и я хотел бы избежать этого, если это возможно) < /li>
< /ul>

Вот моя деятельность: < /p>
public class FragmentTestsActivity extends Activity implements OnClickListener {

private Button btn1;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

btn1 = (Button) findViewById(R.id.btn1);
btn1.setOnClickListener(this);

Fragment newFragment = new Fragment1();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.add(R.id.fragmentContainer, newFragment).commit();
}

@Override
public void onClick(View view) {
int id = view.getId();
if (id == R.id.btn1) {
showNewFragment();
}
}

public void showNewFragment() {
// Instantiate a new fragment.
Fragment2 newFragment = new Fragment2();

// Add the fragment to the activity, pushing this transaction
// on to the back stack.
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.fragmentContainer, newFragment);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.addToBackStack(null);
ft.commit();
}
}
< /code>
Мой фрагмент #1: < /p>
public class Fragment1 extends Fragment implements LoaderCallbacks {

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

@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);

LoaderManager.enableDebugLogging(true);
getLoaderManager().initLoader(0, null, this);
}

private static class TestLoader extends AsyncTaskLoader {

String result;

public TestLoader(Context context) {
super(context);
}

@Override
public String loadInBackground() {
// Some long-running call to a webservice - replaced with a simple string to test with
return "FirstTimeData";
}

@Override
public void deliverResult(String data) {
result = data;

if (isStarted()) {
super.deliverResult(data);
}
}

@Override
protected void onStartLoading() {
if (result != null) {
deliverResult(result);
}
if (takeContentChanged() || result == null) {
forceLoad();
}
}

@Override
protected void onStopLoading() {
cancelLoad();
}
}

@Override
public Loader onCreateLoader(int id, Bundle args) {
return new TestLoader(getActivity());
}

@Override
public void onLoadFinished(Loader loader, String result) {
Log.d("Fragment1", "onLoadFinished: " + result);
}

@Override
public void onLoaderReset(Loader loader) {
// TODO Auto-generated method stub
}
}
< /code>
Кто -нибудь знает решение для этого или то, что я делаю здесь не так? Любая помощь высоко ценится.

Подробнее здесь: https://stackoverflow.com/questions/706 ... d-contains
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Loadercallbacks.onloadfinired не вызывается, когда погрузчик ограничивается и содержит данные
    Anonymous » » в форуме JAVA
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Loadercallbacks.onloadfinired не вызывается, когда погрузчик ограничивается и содержит данные
    Anonymous » » в форуме Android
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Loadermanager.loadercallbacks студия Android
    Anonymous » » в форуме JAVA
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Loadermanager.loadercallbacks студия Android
    Anonymous » » в форуме Android
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Мой MMAP терпит неудачу, когда эльфийский погрузчик Linux не
    Anonymous » » в форуме Linux
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»