1

我想从 Fragment B 更改 Fragment A 的 LinearLayout 的背景颜色。这些片段在滑动选项卡中的同一个 viewpager 中。

两个片段的数据都是从服务器动态更改的。在这里我必须单击片段 B 的文本视图,然后手动更改其线性布局的颜色(POST 方法),但由于片段 A 的背景颜色变慢(因为片段 A 的文本视图已被选中,因此其颜色已设置。)不会从 LinearLayout(GET 方法)中删除。但过一段时间就会消失。

所以我想手动设置颜色,直到要加载颜色。在单击 textview 进行选择包时制作良好的用户界面。

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

}

片段的同一个viewpager中有三个片段,在三个选项卡内。

4

1 回答 1

0

如果您的片段在同一个活动中,您可以使用FragmentManager. findFragmentById(int id)调用Fragment.getFragmentManager()方法返回的哪个来检索另一个片段的引用,然后调用该方法来更改背景颜色

于 2018-05-04T03:37:17.370 回答