AsyncTask onPostExecute方法中的LayoutInflater

时间:2016-12-21 07:35:44

标签: android drawerlayout

我在drawerLayout内使用NavDrawer fragment

每次选择标签时,我都会执行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的新手。

任何帮助将不胜感激。感谢。

2 个答案:

答案 0 :(得分:0)

尝试使用loopj或sort而不是asynctask,服务器调用将更好地工作:

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

除了在帖子上,我只会更改片段并为每种情况制作片段

您可以将其用作参考:

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

我认为这些会让你的生活更轻松,享受。

答案 1 :(得分:0)

请避免这样做:你会以意想不到的行为结束!

要进行异步http调用,请使用像Volley一样的异步http库。

使用该库,您将直接在HTTP响应到达您的手机/应用程序时触发的回调中管理您的UI /应用程序状态(填充标签,下拉菜单等)!