2016-12-21 9 views
2

NavDrawer fragment 안에 drawerLayout을 사용하고 있습니다.AsyncTask onPostExecute 메서드 내부의 LayoutInflater

탭을 선택할 때마다 데이터를 얻으려면 AsyncTask을 수행합니다.

이 앱은 실시간이 아니기 때문에 항상 서버에서 데이터를 요청합니다.

Layout의 일부를 수정하고 싶습니다. AsyncTask 내부

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()); 
} 

(이것이 내가 무엇을 시도했다입니다)

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(); 
    } 
} 

내가 잘못하고있는 중이 야합니다. 내가 어떻게해야하는지 추천 해주세요. 죄송합니다, 저는 안드로이드에 새로 왔습니다.

도움을 주시면 감사하겠습니다. 감사.

답변

0

loopj 또는 일종의 대신 AsyncTask를의 무언가를 사용해보십시오, 서버 호출이 훨씬 더 잘 작동합니다 :

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

다른 그 게시물에 난 그냥 조각을 변경하고 만드는 것보다 조각을 각 상황에

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

:

당신은에 refrence로 사용할 수 있습니다 나는 그것들이 당신의 삶을 훨씬 더 쉽게 만들고 즐겁게 해줄 것이라고 생각합니다.

0

예기치 않은 동작이 종료됩니다.

비동기 http 호출을하려면 Volley와 같은 비동기 http 라이브러리를 사용하십시오!

해당 lib를 사용하면 HTTP 응답이 휴대 전화/앱에 도착할 때 콜백 내부에서 직접 UI/앱 상태 (채우기 라벨, 드롭 다운 메뉴 등)를 직접 관리 할 수 ​​있습니다!

+0

그러나 인증 기는 발리에 어떻게 넣을 수 있습니까? 전에 사용하려고했는데 실패했습니다. 그것이 내가 이것을 창조 한 이유입니다. –

+0

인증 자의 의미는 무엇입니까? 나는 지금까지는 loopj를 사용하지 않았지만, loopj로 나의 대답을 시도하지 않으면 발리가 모든 인증을 구글의 코드로 제공한다고 확신한다. 인증과 함께 쉽게 작동한다. – yanivtwin