0

У меня есть приложение, которое использует библиотеку SlidingMenu. Это, по сути, Fragment в основном Activity, который входит и выходит из вида при пользовательских swypes (например, Youtube, Google+, Facebook).Как динамически обновлять фрагмент (SlidingMenu) Когда View Created

В верхней части LinearLayout в этом SlidingMenu есть динамическая информация. Такие как Вход и другая информация, которая изменяется, когда пользователи взаимодействуют в приложении.

Один пример: пользователь открывает приложение, этот макет в SlidingMenu говорит «Войдите». Они заходят в меню overflow, начинают вход Activity (над MainFragmentActivity), знаки в успешно, и вход Activity dissapears. В следующий раз они красть открытое меню, они должны видеть свое имя пользователя, в профиле статистика, фотографию и т.д.

Мой вопрос:Как динамически изменять этот макет без использования кнопки обновления?

включает ли это с помощью:

onCreateView() метода в fragment?

Примечание: В настоящее время он обновляется только при запуске приложения. Он запускает AsynTask для загрузки вещей с MySQL. Кажется, что пустая трата ресурсов, чтобы попасть в БД каждый раз, когда пользователь открывает панель, есть ли более эффективный способ использования этого?

+1

Вы хотите, чтобы кешировать содержимое на самом телефоне (возможно, в sqlite), вам нужно будет проверять новый удаленный контент с интервалами, когда ваше приложение находится на переднем плане, и/или, возможно, даже использовать что-то вроде Google Cloud Передача сообщений для проверки вашего приложения в случае, если данные необходимо быстро обновить, но нерегулярно (например, вам нужно будет использовать приложение чата или клиент Twitter). –

+0

Спасибо. Если у меня есть время, я могу даже расширить его, или, возможно, кто-то еще доберется до него, прежде чем я это сделаю. Кстати, о каком содержании мы говорим? Нужно ли быть безопасным? Предполагаете ли вы, что используете Google Cloud Messaging? Или это будет излишним? Кроме того, связано ли ваше соединение с MySQL прямым соединением с базой данных, или вы используете веб-сервер php между ними? –

+0

@StephanBranczyk Чтобы ответить на ваши вопросы: информация не чувствительна. Просто имя пользователя, десятки, ряды, что-то в этом роде. Будет использовать GCM в другой области приложения (уведомления о сообщениях). Еще ничего об этом не знаю - нужно исследовать! Соединение MySQL выполняется через php. Приложение представляет собой почти мини-социальную сеть, такую ​​как функциональность. – KickingLettuce

ответ

1

Вы хотите, чтобы кешировать содержимое на самом телефоне (возможно, в sqlite), вам нужно будет проверять новый удаленный контент с интервалами, когда ваше приложение находится на переднем плане, и/или, возможно, даже использовать что-то вроде Google Cloud Messaging для отправки вашего приложения на случай, если данные необходимо быстро обновить, но нерегулярно (например, вам нужно будет использовать приложение чата или клиент Twitter).

+0

Можете ли вы привести пример того, какой контент нужно кэшировать? Например, динамический аспект содержит оценку пользователя. Я загружаю счет из MySQL, когда приложение запускается.Должен ли я добавить к нему динамически, кэшируя это число в SQLite в фоновом режиме и работая с ним таким образом (все же отправит информацию в базу данных MySQL (просто нет необходимости возвращать ее для получения результатов)? – KickingLettuce

+0

@KickingLettuce, какой Это оценка - это счет из игры, сыгранной на вашем устройстве Android, или это спортивный счет или оценка из онлайн-игры, не воспроизводимой через устройство? Также это единый счет? Насколько сложна эта оценка? Вы также держите рейтинг других игроков на одинаковых уровнях? Причина, по которой я спрашиваю, заключается в том, что использование sqlite может быть чрезмерным для одного балла. –

+0

Его единственная оценка пользователя. Когда они взаимодействуют с приложением, некоторые вещи добавляют к их оценка также влияет на рейтинг и уровень, которые также обновляются в одном и том же макете, но все они условны на основе оценки. Например, 5000 точек переместит вас на следующий уровень. Эффект Domino. – KickingLettuce

1

Как упоминал Стефан, вы можете кэшировать данные в SQLite, кроме того, вы можете использовать contentProvider, чтобы вернуть курсор на данные, хранящиеся, такие как имя пользователя.

Теперь преимущество заключается в том, что при входе пользователя в систему вы можете вызвать обновление в contentProvider, обновив значение, а затем вызвать contentResolver.NotifyChange, который будет обновлять результат в курсоре, в свою очередь автоматически обновлять то, что находится в slideMenu.

Смежные вопросы