Итак, я создал простое приложение, используя шаблон активности в навигационном ящике и вид в нем переработчика
. В приложении есть 3 меню в навигационном ящике, меню Домой , Галерея и tools .
при первом запуске приложения оно будет указывать на Home с фрагментом home, то есть показывать содержимое, которое я получил от JSON в публичных API. когда я вхожу в меню галереи или инструмент и возвращаюсь в главное меню, то содержимое, которое я получаю, может безопасно отображаться. но когда я нахожусь в главном меню и щелкаю по главному меню в навигации по ящикам, оно отображает загрузку, но содержимое, которое я должен получить, не отображается, а результаты просмотра фрагмента и повторного просмотра отображают пустую страницу.
это код из моего домашнего фрагмента
package com.badjing.navdrawer.ui.home;
import ...
public class HomeFragment extends Fragment {
private List<PostsModel> postsArrayList = new ArrayList<>();
private ProgressDialog pDialog;
private SwipeRefreshLayout pullToRefresh;
RecyclerView recyclerView;
LinearLayoutManager linearLayoutManager;
PostsAdapter postAdapter;
private Config config = new Config();
String URL_FIX;
public View onCreateView(final LayoutInflater inflater, @Nullable final ViewGroup container, @Nullable final Bundle savedInstanceState) {
urlBuilder();
refreshData();
return inflater.inflate(R.layout.fragment_home, container, false);
}
private void refreshData() {
new getContent().execute();
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
refreshData();
recyclerView = (RecyclerView) getActivity().findViewById(R.id.post_recycle_view);
linearLayoutManager = new LinearLayoutManager(getContext());
postAdapter = new PostsAdapter(getContext(), postsArrayList);
recyclerView.setLayoutManager(linearLayoutManager);
recyclerView.smoothScrollToPosition(recyclerView.getBottom());
recyclerView.setAdapter(postAdapter);
}
class getContent extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
// Showing progress dialog
pDialog = new ProgressDialog(getActivity());
pDialog.setMessage("Please wait...");
pDialog.setCancelable(false);
pDialog.show();
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
postAdapter.notifyDataSetChanged();
recyclerView.invalidate();
pDialog.dismiss();
}
@Override
protected Void doInBackground(Void... voids) {
HttpHandler sh = new HttpHandler();
// Making a request to url and getting response
String jsonStr = sh.makeServiceCall(URL_FIX);
if (jsonStr != null) {
try{
JSONObject jsonObj = new JSONObject(jsonStr);
JSONObject feed = jsonObj.getJSONObject("feed");
JSONArray entry = feed.getJSONArray("entry");
for (int i = 0; i < entry.length(); i++) {
PostsModel postsModel = new PostsModel();
// split date
String [] updatedDate = entry.getJSONObject(i).getJSONObject("updated").getString("$t").split("T");
postsModel.setTitle(entry.getJSONObject(i).getJSONObject("title").getString("$t"));
postsModel.setThumbnail(entry.getJSONObject(i).getJSONObject("media$thumbnail")
.getString("url")
.replace("s72-c", "s1600"));
postsModel.setUpdatedDate(" " + updatedDate[0]);
postsArrayList.add(postsModel);
}
} catch (final JSONException e) {
Log.e("RESPONSE", "Json parsing error: " + e.getMessage());
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getContext(),
"Json parsing error: " + e.getMessage(),
Toast.LENGTH_LONG)
.show();
}
});
}
} else {
Log.e("RESPONSE", "Couldn't get json from server.");
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getContext(),
"Couldn't get json from server. Check LogCat for possible errors!",
Toast.LENGTH_LONG)
.show();
}
});
}
return null;
}
}
private void urlBuilder() {
URL_FIX = Config.BLOG_URL
+ Config.BLOG_URL_MAX_RESULT
+ Config.MAX_RESULT // max result number
+ config.BLOG_URL_START_INDEX
+ config.START_INDEX // Start Index number
+ config.BLOG_URL_ALT_TYPE;;
}
}
Как мне решить проблему, если я нахожусь в главном меню и щелкаю по главному меню, оно перезагрузит существующий контент .
спасибо за внимание и помощь