studio framework alternative android tabs progressdialog

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