2016-12-21 5 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

ではなくasynctaskのloopjまたは並べ替えのようなものを使用してみてください、サーバーの呼び出しがはるかに良い仕事します:

ポストにそれ以外

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

私はちょうどフラグメントを変更し、それぞれの状況

のための断片になるだろう

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

あなたはrefrenceとしてこれを使用することができます私はそれらがあなたの人生をもっと楽にして楽しくしてくれると思います。

0

予期しない動作で終了します。

非同期httpコールを行うには、Volleyのような非同期httpライブラリを使用してください。

あなたのUI/App-state(埋め込みラベル、ドロップダウンメニューなど)は、HTTPレスポンスがあなたの電話機に届くとコールバック内で直接管理されます。

+0

しかし、オーセンティケータをボレーに入れるにはどうしたらいいですか?私は前にそれを使用しようとしたが失敗した。だから、私はこれを作成します。 –

+0

認証者はどういう意味ですか?私はボレーを使用したことがない私はループジャーを今のところ使用している、私はボレーがすべての認証をGoogleのコードであると確信している、もしそれがうまくいかないなら、loopjで私の答えを試して、 – yanivtwin

関連する問題