2016-12-21 6 views
2

Я использую drawerLayout внутри NavDrawer fragment.LayoutInflater внутри AsyncTask onPostExecute метод

Каждый раз, когда выбрана табуляция, я выполняю команду AsyncTask для получения данных.

Это приложение не в режиме реального времени, поэтому я всегда запрашиваю данные с сервера.

Я хочу отредактировать некоторые части Layout.

public void onTabSelected(TabLayout.Tab tab) { 
    if (tab.getPosition() == 0) { 
    GetProfileTask getProfileTask = new GetProfileTask(); 
    getProfileTask.execute(); 
    } else if (tab.getPosition() == 1) { 
    GetGames getGames = new GetGames(); 
    getGames.execute(); 
    } 

    viewPager.setCurrentItem(tab.getPosition()); 
} 

Внутри AsyncTask (это то, что я пробовал)

protected void onPostExecute(String result) { 
    try { 
    JSONObject jObject = new JSONObject(result); 
    JSONObject profilObject = jObject.getJSONObject("Profil"); 

    if (profilObject != null) { 
     email = profilObject.getString("email"); 
     bankName = profilObject.getString("bName"); 
     bankAccountName = profilObject.getString("bAccName"); 
     bankAccNum = profilObject.getString("bAccNum"); 

     LayoutInflater inflater = getActivity().getLayoutInflater(); 
     View v = inflater.inflate(R.layout.fragment_home_tab1, null); 

     TextView un = (TextView) v.findViewById(R.id.profile_username); 
     un.setText(profilObject.getString("username")); 
    } 
    } catch (JSONException e) { 
    e.printStackTrace(); 
    } 
} 

Если я делаю это неправильно. Пожалуйста, порекомендуйте, как мне это сделать. Извините, я новичок в android.

Любая помощь будет оценена по достоинству. Благодарю.

ответ

0

Попробуйте использовать loopj или что-то вроде вместо AsyncTask, звонки сервера будет работать гораздо лучше:

https://github.com/loopj/android-async-http

Другие, чем на пост я бы просто изменить фрагмент и сделать фрагменты для каждой ситуации

вы можете использовать это в качестве refrence:

http://www.survivingwithandroid.com/2013/04/android-fragment-transaction.html

Я думаю, что это сделает вашу жизнь намного легче, наслаждайтесь.

0

Пожалуйста, избегайте этого: вы закончите с неожиданным поведением!

Чтобы сделать асинхронные http-звонки, используйте асинхронную http-библиотеку, такую ​​как Volley!

Используя эту библиотеку, вы будете управлять своим пользовательским интерфейсом/App-state (заполнить ярлык, выпадающее меню и т. Д.) Непосредственно внутри обратного вызова, когда ответ HTTP будет поступать на ваш телефон/приложение!

+0

Но как я могу поставить Authenticator внутри залпа? Я пытался использовать его раньше, и я потерпел неудачу. Вот почему я создаю этот. –

+0

Что вы подразумеваете под аутентификатором? я никогда не использовал volley, я использую только loopj, я уверен, что volley поставляет всю аутентификацию, поскольку это код Google, если он не работает, попробуйте мой ответ с помощью loopj, он легко работает с аутентификацией – yanivtwin