错误选项卡中的 progressDialog
progressDialog in wrong tab
我的应用程序中有 4 个选项卡。其中之一用于 json 解析进度对话框。但是我在另一个选项卡上看到了进度对话框。
@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();
}
}
我想在文本左侧看到图标。不在上面。
来自 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) {
}
});
}
进度对话框是独立的window。它将显示直到被丢弃。如果创建它的上下文无效,它会抛出泄漏的异常window。在片段的 onPause 中,检查进度对话框的可空性并关闭它。如果你想在 onResume 中再次显示 window,你还可以检查任务是否仍然是 运行,前提是用户导航回此片段。
在任何情况下,如果您希望在加载视图时仅在特定片段中显示进度,您可能需要考虑改用 ProgressBar 并相应地设置其可见性。
第一个:
public class MyApp extends Application {
public Boolean isLoaded = false;
public Boolean getIsLoaded(){
return isLoaded;
}
public void setIsLoaded(Boolean isLoaded){
this.isLoaded = isLoaded;
}
}
在你的片段端,你可以执行这个:
Boolean status;
status = ((MyApp) getActivity().getApplication()).getIsLoaded();
if(!status){
//show your dialog
//get your data
((MyApp) getActivity().getApplication()).setIsLoaded(true);
}
以上代码希望大家参考。
它基本上是 android 寻呼机工作流程。它总是在您滑动时立即创建一个相邻的页面视图。你可以有记录器和检查。如果我没有弄错你的片段寻呼机,你会在片段的 onResume callback
开始你的进度条。
你为什么不使用片段的这种覆盖方法它只加载一次数据,并且在每个片段打开时加载数据。
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {}
作为
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser && !isApiCalled) {
//call the api and load data
isApiCalled = true;
}
}
我的应用程序中有 4 个选项卡。其中之一用于 json 解析进度对话框。但是我在另一个选项卡上看到了进度对话框。
@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();
}
}
我想在文本左侧看到图标。不在上面。
来自 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) {
}
});
}
进度对话框是独立的window。它将显示直到被丢弃。如果创建它的上下文无效,它会抛出泄漏的异常window。在片段的 onPause 中,检查进度对话框的可空性并关闭它。如果你想在 onResume 中再次显示 window,你还可以检查任务是否仍然是 运行,前提是用户导航回此片段。 在任何情况下,如果您希望在加载视图时仅在特定片段中显示进度,您可能需要考虑改用 ProgressBar 并相应地设置其可见性。
第一个:
public class MyApp extends Application {
public Boolean isLoaded = false;
public Boolean getIsLoaded(){
return isLoaded;
}
public void setIsLoaded(Boolean isLoaded){
this.isLoaded = isLoaded;
}
}
在你的片段端,你可以执行这个:
Boolean status;
status = ((MyApp) getActivity().getApplication()).getIsLoaded();
if(!status){
//show your dialog
//get your data
((MyApp) getActivity().getApplication()).setIsLoaded(true);
}
以上代码希望大家参考。
它基本上是 android 寻呼机工作流程。它总是在您滑动时立即创建一个相邻的页面视图。你可以有记录器和检查。如果我没有弄错你的片段寻呼机,你会在片段的 onResume callback
开始你的进度条。
你为什么不使用片段的这种覆盖方法它只加载一次数据,并且在每个片段打开时加载数据。
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {}
作为
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser && !isApiCalled) {
//call the api and load data
isApiCalled = true;
}
}