android - framework - progressDialog en la pestaña incorrecta
progressdialog en android (4)
Tengo 4 pestañas en mi aplicación. Uno de ellos es para analizar json con diálogo de progreso. Pero veo el diálogo progres en otra pestaña.
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_parsing, container, false);
lv = (ListView)view.findViewById(R.id.list);
progressDialog = ProgressDialog.show(lv.getContext(), null, getResources().getString(R.string.connecting), true, true);
MyTask myTask = new MyTask(FragmentParsing.this);
myTask.execute(url);
return view;
}
@Override
public void onTaskComplete(ArrayList<String> array) {
if(array != null) {
//adapter.clear();
arrayList.addAll(array);
adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, arrayList);
lv.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
else
Toast.makeText(getView().getContext(), getResources().getString(R.string.fuck), Toast.LENGTH_SHORT).show();
if (progressDialog != null && progressDialog.isShowing()) {
progressDialog.dismiss();
}
}
Y quiero ver iconos a la izquierda del texto. No por encima.
Código de MainActivity
private void setUI(){
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
if (toolbar != null){
toolbar.setTitleTextColor(getResources().getColor(R.color.white));
setSupportActionBar(toolbar);
}
TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout);
tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.ic_list_white_18dp).setText(R.string.listtab));
tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.ic_camera_alt_white_18dp).setText(R.string.scalingtab));
tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.ic_web_asset_white_18dp).setText(R.string.parsingtab));
tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.ic_my_location_white_18dp).setText(R.string.maptab));
final ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
TabAdapter tabAdapter = new TabAdapter(fragmentManager, 4);
viewPager.setAdapter(tabAdapter);
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
}
El diálogo de progreso es una ventana independiente. Se mostrará hasta que se descarte. Si el contexto que lo creó es anulado, arrojará una excepción de la ventana filtrada. En el fragmento onPause, compruebe la nulabilidad del diálogo de progreso y deséchelo. También puede verificar si la tarea aún se está ejecutando si desea mostrar la ventana nuevamente en onResume, siempre que el usuario navegue de regreso a este fragmento. En cualquier caso, si desea que el progreso solo se muestre en un fragmento específico mientras se cargan las vistas, puede considerar usar ProgressBar en su lugar y establecer su visibilidad en consecuencia.
Es básicamente el flujo de trabajo del buscapersonas con Android. Siempre crea una vista de página adyacente tan pronto como desliza. Puede tener logger y check. Si no me equivoco con el buscapersonas de fragmento, empiezas tu barra de progreso en la onResume callback
de onResume callback
de tu fragmento.
Primero:
public class MyApp extends Application {
public Boolean isLoaded = false;
public Boolean getIsLoaded(){
return isLoaded;
}
public void setIsLoaded(Boolean isLoaded){
this.isLoaded = isLoaded;
}
}
Y en su lado del fragmento, puede realizar esto:
Boolean status;
status = ((MyApp) getActivity().getApplication()).getIsLoaded();
if(!status){
//show your dialog
//get your data
((MyApp) getActivity().getApplication()).setIsLoaded(true);
}
Espero que puedas tomar referencia del código anterior.
¿Por qué no utilizas este método de anulación de fragmentos para cargar datos solo una vez y para cada fragmento cuando está abierto?
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {}
como
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser && !isApiCalled) {
//call the api and load data
isApiCalled = true;
}
}