Я пытаюсь показать пользовательскую панель прогресса, используя this Сторонняя библиотека в 2 фрагментах TabLayout. Я показываю progressbar, в то время как в фоновом режиме я делаю volley stringrequest. Проблема в том, что индикатор прогресса не скрывается даже после того, как результат загружается из веб-службы. Эта проблема не возникает, когда я использую регулярный progressdialog с TabLayout. Хотя эта настраиваемая панель прогресса отлично работает в обычном макете, она не работает в TabLayout. Есть ли какая-то особая причина для этого? Благодарю.пользовательский диалог прогресса не скрывается
// custom_progress_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="@android:color/transparent"
android:orientation="vertical">
<com.wang.avi.AVLoadingIndicatorView
android:id="@+id/progress_bar"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_centerInParent="true"
android:visibility="gone"
app:indicator="BallClipRotatePulse"
app:indicator_color="@android:color/darker_gray"/>
</RelativeLayout>
// One of the fragment of TabLayout
public class FirstFragment extends Fragment {
private TextView tv1;
private CShowProgress cShowProgress;
private static final String CUSTOMERS_INFO = "My API";
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.first, container, false);
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
tv1 = (TextView)view.findViewById(R.id.tv1);
cShowProgress = CShowProgress.getInstance();
showCustomersDetails();
}
private void showCustomersDetails() {
cShowProgress.showProgress(getActivity());
StringRequest stringRequest = new StringRequest(Request.Method.POST, CUSTOMERS_INFO,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
cShowProgress.hideProgress(); // THIS DOESNOT WORK AS PROGRESSBAR STILL SHOWS
try {
JSONObject jsonObject = new JSONObject(response);
JSONArray jsonArray = jsonObject.getJSONArray("aboutuser");
for(int i=0; i<jsonArray.length(); i++){
JSONObject obj = jsonArray.getJSONObject(i);
String str1 = "Contact:" + obj.getString("primary_contact");
String str2 = "EMail:" + obj.getString("email");
String total = str1 + "\n" + str2;
tv1.setText(total);
}
} catch (JSONException e) {
// JSON error
e.printStackTrace();
Toast.makeText(getActivity(), "Json error: " + e.getMessage(), Toast.LENGTH_LONG).show();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getActivity(), "VolleyError" + error.toString(), Toast.LENGTH_LONG).show();
}
}) {
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<String, String>();
params.put("spaid", "145");
params.put("customer_id", "64");
return params;
}
};
RequestQueue requestQueue = Volley.newRequestQueue(getActivity());
requestQueue.add(stringRequest);
}
}
//Custom Class for 3rd party library of progressbar
public class CShowProgress {
public static CShowProgress s_m_oCShowProgress;
public static Context m_Context;
public Dialog m_Dialog;
public CShowProgress(Context m_Context) {
this.m_Context = m_Context;
}
public static CShowProgress getInstance() {
if (s_m_oCShowProgress == null) {
s_m_oCShowProgress = new CShowProgress(m_Context);
}
return s_m_oCShowProgress;
}
public void showProgress(Context m_Context) {
m_Dialog = new Dialog(m_Context);
m_Dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
m_Dialog.setContentView(R.layout.custom_progress_layout);
m_Dialog.findViewById(R.id.progress_bar).setVisibility(View.VISIBLE);
m_Dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
m_Dialog.setCancelable(true);
m_Dialog.setCanceledOnTouchOutside(true);
m_Dialog.show();
}
public void hideProgress() {
if (m_Dialog != null) {
m_Dialog.dismiss();
m_Dialog = null;
}
}
}
Не работает @Sathish. – Sammy
попробуйте отредактированный ответ –
Все еще не работает. Здесь проблема в том, что библиотека предназначена для progressbar (чья видимость может быть удалена), но пользовательский класс предназначен для ProgressDialog с настраиваемой компоновкой (чья видимость не может исчезнуть). – Sammy