Можем ли мы изменить цвет фона Linearlayout Fragmet A от другого фрагмента B? без ошибок - PullRequest
0 голосов
/ 03 мая 2018

Я хочу изменить цвет фона LinearLayout фрагмента A с фрагмента B. Эти фрагменты находятся в одном и том же окне просмотра на скользящих вкладках.

Данные обоих фрагментов динамически изменяются с сервера. Здесь нужно щелкнуть текстовое представление фрагмента B, затем цвет его линейного макета изменить вручную (метод POST), но из-за чистого медленного цвета фона фрагмента A (поскольку текстовое представление фрагмента A уже выбран, поэтому его цвет уже установлен.) не удаляется из LinearLayout (метод GET). Но через некоторое время оно исчезнет.

Итак, я хочу установить цвет вручную, пока цвет не будет загружен. Чтобы сделать хороший пользовательский интерфейс при нажатии на текстовое представление для выбора пакета.

MinPackageFragment

public class MinPackageFragment extends Fragment {

    ConnectionDetector connectionDetector = new ConnectionDetector(getActivity());


    private View mView;
    private TextView nepal_minimum_package_price, nepal_minimum_package_plan;
    private LinearLayout nepal_minimum_package_linearlayout;

    private String GET_NEPAL_MIN_PACKAGE_URL;
    private String CHECK_CURRENT_PACKAGE_URL;
    private WebView webview;
    private String minPackagePrice;
    private String minPackageItem;
    private int THIS_ID;
    private String CHOOSE_PACKAGE;
    private int currentId;
    private int CURRENT_PACKAGE_ID;

    private ProgressDialog mProgressDialog;


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        mView = inflater.inflate(R.layout.fragment_min_package, container, false);

        SharedPreferences pref = this.getActivity().getSharedPreferences("MyPref", MODE_PRIVATE);
        String token = pref.getString("token1", "empty");
        THIS_ID = 1001;
        GET_NEPAL_MIN_PACKAGE_URL = "http://insocify.com/api/packages";
        CHECK_CURRENT_PACKAGE_URL = "http://insocify.com/api/user/packages?token=" + token;
        CHOOSE_PACKAGE = "http://insocify.com/api/user/package/choose/1001?token=" + token;

        webview = (WebView) mView.findViewById(R.id.minimumNepaliListWebView);
        webview.getSettings().setJavaScriptEnabled(true);

        if (getActivity() != null) {
            mProgressDialog = new ProgressDialog(getActivity());
            mProgressDialog.setIndeterminate(true);
            mProgressDialog.setCancelable(false);
            mProgressDialog.setMessage("Loading...");
        }

        showDialog();

        nepal_minimum_package_price = mView.findViewById(R.id.nepal_minimum_package_price);
        nepal_minimum_package_plan = mView.findViewById(R.id.nepal_minimum_package_plan);

        nepal_minimum_package_linearlayout = mView.findViewById(R.id.nepal_minimum_package_linearlayout);


        nepal_minimum_package_plan.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

// I want change here the background color of linearlayout of another fragment but getting error 

                showDialog();
                choosePackage();
                nepal_minimum_package_plan.setText("Your Plan");
                nepal_minimum_package_linearlayout.setBackgroundResource(R.drawable.background_square_selected);


            }
        });



        setContentFromServer();

        SharedPreferences pref123 = getActivity().getSharedPreferences("minnepaldata", MODE_PRIVATE);
        String avgprice = pref123.getString("mineprice", minPackagePrice);
        String avgitems = pref123.getString("minitems", minPackageItem);

        nepal_minimum_package_price.setText(avgprice);
        webview.loadData(avgitems, "text/html; charset=utf-8", "UTF-8");

        chooseNepaliPackage();



        if (CURRENT_PACKAGE_ID == THIS_ID) {
            nepal_minimum_package_plan.setText("Your Plan");
            nepal_minimum_package_linearlayout.setBackgroundResource(R.drawable.background_square_selected);
        }


        return mView;
    }

    private void choosePackage() {


        StringRequest stringRequest = new StringRequest(Request.Method.GET, CHOOSE_PACKAGE, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                try {
                    JSONObject responceData = new JSONObject(response);



                    int status = responceData.getInt("status");

                    if (status == 1) {

                        JSONObject data = responceData.getJSONObject("data");

                        Log.v("mydata1", data + "");

                        String currentDataStr = data.getString("current");

                        Log.v("currentStr", "" + currentDataStr);

                        JSONObject currentData = new JSONObject(currentDataStr);


                        if (currentData != null) {

                            currentId = currentData.getInt("id");

                            if (currentId == 1001) {



                                nepal_minimum_package_plan.setText("Your Plan");
                                nepal_minimum_package_linearlayout.setBackgroundResource(R.drawable.background_square_selected);

                                nepal_minimum_package_plan.setEnabled(false);

                                hideDialog();

                                nepal_minimum_package_linearlayout.setVisibility(View.VISIBLE);
                            }

                        }


                    }


                } catch (JSONException e) {
                    e.printStackTrace();
                }

            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {

                hideDialog();

                Toast.makeText(getActivity(), "Please check your network.", Toast.LENGTH_SHORT).show();

                nepal_minimum_package_linearlayout.setVisibility(View.VISIBLE);
            }
        });
        RequestQueue requestQueue = Volley.newRequestQueue(getActivity());
        requestQueue.add(stringRequest);


    }


    private void setContentFromServer() {

        StringRequest stringRequest = new StringRequest(Request.Method.GET, GET_NEPAL_MIN_PACKAGE_URL, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {

                try {
                    JSONObject responceData = new JSONObject(response);


                    JSONArray jsonNepal = responceData.getJSONArray("1");

                    JSONObject silver = jsonNepal.getJSONObject(0);
                    JSONObject gold = jsonNepal.getJSONObject(1);
                    JSONObject platinum = jsonNepal.getJSONObject(2);

                    String name = silver.getString("name");

                    minPackagePrice = silver.getString("price");
                    minPackageItem = silver.getString("includes");

                    if (getActivity() != null) {
                        SharedPreferences pref123 = getActivity().getSharedPreferences("minnepaldata", MODE_PRIVATE);
                        SharedPreferences.Editor editor = pref123.edit();
                        editor.putString("mineprice", minPackagePrice);
                        editor.putString("minitems", minPackageItem);
                        editor.apply();
                    }



                } catch (JSONException e) {
                    e.printStackTrace();
                }

            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Toast.makeText(getActivity(), "Please check your network.", Toast.LENGTH_SHORT).show();
            }
        });
        RequestQueue requestQueue = Volley.newRequestQueue(getActivity());
        requestQueue.add(stringRequest);
    }

    private void chooseNepaliPackage() {


        StringRequest stringRequest = new StringRequest(Request.Method.GET, CHECK_CURRENT_PACKAGE_URL, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {

                try {
                    JSONObject responceData = new JSONObject(response);

                    hideDialog();

                    int status = responceData.getInt("status");

                    if (status == 1) {

                        JSONObject data = responceData.getJSONObject("data");

                        String currentDataStr = data.getString("current");

                        Log.v("currentStr", "" + currentDataStr);

                        JSONObject currentData = new JSONObject(currentDataStr);


                        if (currentData != null) {

                            CURRENT_PACKAGE_ID = currentData.getInt("id");

                            if (CURRENT_PACKAGE_ID == 1001) {

                                nepal_minimum_package_plan.setText("Your Plan");
                                nepal_minimum_package_linearlayout.setBackgroundResource(R.drawable.background_square_selected);
                                nepal_minimum_package_plan.setEnabled(false);

                                nepal_minimum_package_linearlayout.setVisibility(View.VISIBLE);
                            }

                        }


                    }


                } catch (JSONException e) {
                    e.printStackTrace();
                }

            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {

                hideDialog();
                if (getActivity() != null) {
                    Toast.makeText(getActivity(), "Please check your network.", Toast.LENGTH_SHORT).show();
                }
                nepal_minimum_package_linearlayout.setVisibility(View.VISIBLE);
            }
        });
        if (getActivity() != null) {
            RequestQueue requestQueue = Volley.newRequestQueue(getActivity());
            requestQueue.add(stringRequest);
        }
    }





    public void showDialog() {

        if (mProgressDialog != null && !mProgressDialog.isShowing())
            mProgressDialog.show();
    }

    public void hideDialog() {

        if (mProgressDialog != null && mProgressDialog.isShowing())
            mProgressDialog.dismiss();
    }


}

MaxPackageFragment

public class MaxPackageFragment extends Fragment {

    ConnectionDetector connectionDetector = new ConnectionDetector(getActivity());

    private WebView maximumNepaliListWebView;

    private View maxView;


    private TextView nepal_maximum_package_plan, nepal_maximum_package_price;


    private String GET_NEPAL_PACKAGE_URL;
    private String maxPackageprice;
    private String maxPackageitems;
    private String CHECK_CURRENT_PACKAGE_URL;
    private LinearLayout nepal_maximum_package_linearlayout;
    private String CHOOSE_PACKAGE;
    private int THIS_ID;
    private int currentId;
    private int CURRENT_PACKAGE_ID;
    private ProgressDialog mProgressDialog;


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        maxView = inflater.inflate(R.layout.fragment_max_package, container, false);

        SharedPreferences pref = this.getActivity().getSharedPreferences("MyPref", MODE_PRIVATE);
        String token = pref.getString("token1", "empty");

        THIS_ID = 1003;

        GET_NEPAL_PACKAGE_URL = "http://insocify.com/api/packages";
        CHECK_CURRENT_PACKAGE_URL = "http://insocify.com/api/user/packages?token=" + token;
        CHOOSE_PACKAGE = "http://insocify.com/api/user/package/choose/1003?token=" + token;


        nepal_maximum_package_linearlayout = maxView.findViewById(R.id.nepal_maximum_package_linearlayout);

        maximumNepaliListWebView = maxView.findViewById(R.id.maximumNepaliListWebView);

        if (getActivity() != null) {
            mProgressDialog = new ProgressDialog(getActivity());
            mProgressDialog.setIndeterminate(true);
            mProgressDialog.setCancelable(false);
            mProgressDialog.setMessage("Loading...");
        }
        showDialog();

        nepal_maximum_package_plan = maxView.findViewById(R.id.nepal_maximum_package_plan);
        nepal_maximum_package_price = maxView.findViewById(R.id.nepal_maximum_package_price);


        nepal_maximum_package_plan.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                showDialog();

                // I want change here the background color of linearlayout of another fragment but getting error

                choosePackage();
                nepal_maximum_package_plan.setText("Your Plan");
                nepal_maximum_package_linearlayout.setBackgroundResource(R.drawable.background_square_selected);

            }
        });

        setItemToLayout();

        SharedPreferences pref1 = getActivity().getSharedPreferences("maxnepaldata", MODE_PRIVATE);
        String maxprice = pref1.getString("maxprice", maxPackageprice);
        String maxitems = pref1.getString("maxitems", maxPackageitems);

        nepal_maximum_package_price.setText(maxprice);
        maximumNepaliListWebView.loadData(maxitems, "text/html; charset=utf-8", "UTF-8");

        chooseNepaliPackage();

        if (CURRENT_PACKAGE_ID == THIS_ID) {
            nepal_maximum_package_plan.setText("Your Plan");
            nepal_maximum_package_linearlayout.setBackgroundResource(R.drawable.background_square_selected);
        }

        return maxView;
    }

    private void choosePackage() {

        StringRequest stringRequest = new StringRequest(Request.Method.GET, CHOOSE_PACKAGE, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {

                try {
                    JSONObject responceData = new JSONObject(response);


                    int status = responceData.getInt("status");

                    if (status == 1) {

                        JSONObject data = responceData.getJSONObject("data");


                        String currentDataStr = data.getString("current");


                        JSONObject currentData = new JSONObject(currentDataStr);


                        if (currentData != null) {

                            currentId = currentData.getInt("id");

                            if (currentId == 1003) {
                                nepal_maximum_package_plan.setText("Your Plan");
                                nepal_maximum_package_linearlayout.setBackgroundResource(R.drawable.background_square_selected);
                                nepal_maximum_package_plan.setEnabled(false);

                                hideDialog();
                            }

                        }


                    }
                    else {

                        JSONArray errordata = responceData.getJSONArray("errors");

                        String errormessage = errordata.getJSONObject(0).getString("message");

                        Toast.makeText(getActivity(), "" + errormessage, Toast.LENGTH_SHORT).show();
                    }


                } catch (JSONException e) {
                    e.printStackTrace();
                }

            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                hideDialog();
                Toast.makeText(getActivity(), "Please check your network.", Toast.LENGTH_SHORT).show();
            }
        });
        RequestQueue requestQueue = Volley.newRequestQueue(getActivity());
        requestQueue.add(stringRequest);


    }

    private void setItemToLayout() {
        StringRequest stringRequest = new StringRequest(Request.Method.GET, GET_NEPAL_PACKAGE_URL, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {

                try {
                    JSONObject responceData = new JSONObject(response);

                    Log.v("responceData", "onResponse: " + responceData);

                    JSONArray jsonNepal = responceData.getJSONArray("1");

                    JSONObject silver = jsonNepal.getJSONObject(0);
                    JSONObject gold = jsonNepal.getJSONObject(1);
                    JSONObject platinum = jsonNepal.getJSONObject(2);

                    String name = platinum.getString("name");

                    maxPackageprice = platinum.getString("price");
                    maxPackageitems = platinum.getString("includes");

                    if (getActivity() != null) {

                        SharedPreferences pref1 = getActivity().getSharedPreferences("maxnepaldata", MODE_PRIVATE);
                        SharedPreferences.Editor editor = pref1.edit();
                        editor.putString("maxprice", maxPackageprice);
                        editor.putString("maxitems", maxPackageitems);
                        editor.apply();
                    }



                } catch (JSONException e) {
                    e.printStackTrace();
                }

            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Toast.makeText(getActivity(), "Please check your network.", Toast.LENGTH_SHORT).show();
            }
        });
        RequestQueue requestQueue = Volley.newRequestQueue(getActivity());
        requestQueue.add(stringRequest);
    }

    private void chooseNepaliPackage() {

        StringRequest stringRequest = new StringRequest(Request.Method.GET, CHECK_CURRENT_PACKAGE_URL, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {

                try {
                    JSONObject responceData = new JSONObject(response);

                    hideDialog();

                    int status = responceData.getInt("status");

                    if (status == 1) {

                        JSONObject data = responceData.getJSONObject("data");

                        String currentDataStr = data.getString("current");

                        Log.v("currentStr", "" + currentDataStr);

                        JSONObject currentData = new JSONObject(currentDataStr);


                        if (currentData != null) {

                            CURRENT_PACKAGE_ID = currentData.getInt("id");

                            if (CURRENT_PACKAGE_ID ==1003){

                                nepal_maximum_package_plan.setText("Your Plan");
                                nepal_maximum_package_linearlayout.setBackgroundResource(R.drawable.background_square_selected);
                                nepal_maximum_package_plan.setEnabled(false);
                            }

                        }


                    }


                } catch (JSONException e) {
                    e.printStackTrace();
                }

            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {

                hideDialog();

                if (getActivity() != null) {
                    Toast.makeText(getActivity(), "Please check your network.", Toast.LENGTH_SHORT).show();
                }
            }
        });
        if (getActivity() != null) {
            RequestQueue requestQueue = Volley.newRequestQueue(getActivity());
            requestQueue.add(stringRequest);
        }
    }

    public void showDialog() {

        if (mProgressDialog != null && !mProgressDialog.isShowing())
            mProgressDialog.show();
    }

    public void hideDialog() {

        if (mProgressDialog != null && mProgressDialog.isShowing())
            mProgressDialog.dismiss();
    }

}

В одной области просмотра фрагмента на трех вкладках находятся три фрагмента.

1 Ответ

0 голосов
/ 04 мая 2018

Если ваш фрагмент находится в той же операции, вы можете использовать FragmentManager. findFragmentById(int id), который возвращается методом invoke Fragment.getFragmentManager(), чтобы получить ссылку на другой фрагмент затем вызовите метод для изменения цвета фона

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...