Button Inside Fragment即使没有错误也无法工作

时间:2017-10-08 14:14:57

标签: java android button onclick fragment

片段内的我的按钮无效。没有错误,我也不知道它有什么问题。

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;


public class GenApp extends Fragment {
EditText etBillAmt;
Spinner spinType, spinHours, spinDays, spinWeeks;
EditText etWattage, etHour, etDay, etWeek, etMonth;
Button btnCalculate;
String BillAmountS,h,d,w;
int i,dfrm,wfrm;
double BillAmount, PKwh, WattDouble, CPH, CPD, CPW, CPM, hrfrm;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    final View rootView = inflater.inflate(R.layout.genapp, container, false);

    h = "8";
    d = "7";
    w = "4";
    etBillAmt = (EditText)rootView.findViewById(R.id.etBillAmt);
    spinType = (Spinner) rootView.findViewById(R.id.spinType);
    spinHours = (Spinner) rootView.findViewById(R.id.spinHours);
    spinDays = (Spinner) rootView.findViewById(R.id.spinDays);
    spinWeeks = (Spinner) rootView.findViewById(R.id.spinWeeks);
    etWattage = (EditText)rootView.findViewById(R.id.etWattage);
    etHour = (EditText)rootView.findViewById(R.id.etHour);
    etDay = (EditText)rootView.findViewById(R.id.etDay);
    etWeek = (EditText)rootView.findViewById(R.id.etWeek);
    etMonth = (EditText)rootView.findViewById(R.id.etMonth);
    btnCalculate = (Button)rootView.findViewById(R.id.btnCalculate);

    final String[] apptypearray = {"AIR COOLER/HUMIDIFIER", "BLENDER", "CELLPHONE CHARGER", "CFL(10 WATTS)", "CFL(18 WATTS)", "CHRISTMAS LIGHT(100 BULBS W/O BLINKER)", "CHRISTMAS LIGHT(100 BULBS W/ BLINKER)",
    "CLOTHES DRYER(HEATER)", "CLOTHES DRYER(MOTOR)", "COFFEE MAKER", "COMPUTER PRINTER", "COMPUTER W/MONITOR", "FLAT IRON(STANDARD)", "FLAT IRON(DELUXE)", "FLOOR POLISHER(STANDARD)", "FLOOR POLISHER(DELUXE)",
    "FLUORESCENT LAMP 21' (20 WATTS)", "FLUORESCENT LAMP 48' (40 WATTS)", "HAIR DRYER", "INCANDESCENT BULB (25 WATTS)", "INCANDESCENT BULB (50 WATTS)", "INCANDESCENT (100 WATTS)", "RECHARGEABLE LIGHTS/FANS", "SEWING MACHINE",
    "VACUUM CLEANER", "WAHING MACHINE AUTOMATIC (6 KG)", "WASHING MACHINE AUTOMATIC (10 KG)", "WASHING MACHINE TWIN TUB (6 KG)", "WASHING MACHINE TWIN TUB (10 KG)", "WATER DISPENSER(COOLING)", "WATER DISPENSER(HEATING)",
            "WATER HEATER", "WATER HEATER (PORTABLE)", "OTHER GENERAL APPLIANCES"};
    final double[] wattagearray = {65, 300, 6, 10, 18, 56, 16, 1600, 250, 600, 175, 225, 600, 1000, 200, 360, 32, 53, 320, 25, 50, 100, 12, 75, 800, 527, 1035, 277, 583, 90, 550, 3000, 1600};
    final double[] KWh = {0.33, 5.18, 6.64, 8.08, 10.12, 10.50, 10.87, 11.54, 11.80};
    final String[] hoursarray = {"15 minutes","30 minutes","45 minutes","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24"};
    final String[] daysarray = {"1","2","3","4","5","6","7"};
    final String[] weeksarray = {"1","2","3","4"};

    ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_item, apptypearray);
    spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinType.setAdapter(spinnerArrayAdapter);
    spinType.setPrompt("Please choose your Appliance");
    spinType.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int position, long l) {
            for (i = 0; i<apptypearray.length; i++){
                if(spinType.getItemAtPosition(position) == apptypearray[i]) {

                    try {
                        etWattage.setText(String.valueOf(wattagearray[i]));
                    } catch (Exception e) {
                        Toast.makeText(getActivity().getApplicationContext(), "Missing Entries", Toast.LENGTH_SHORT).show();
                    }
                }
            }
            etHour.setText("");
            etDay.setText("");
            etWeek.setText("");
            etMonth.setText("");

        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });
    ArrayAdapter<String> HourArrayAdapter = new ArrayAdapter<String>(getActivity(),android.R.layout.simple_spinner_item, hoursarray);
    HourArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinHours.setAdapter(HourArrayAdapter);
    int GP1 = HourArrayAdapter.getPosition(h);
    spinHours.setSelection(GP1);
    spinHours.setPrompt("Hours Used Per Day");
    spinHours.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> houradapterView, View view, int hpos, long l) {
            for(int hctr = 0; hctr<hoursarray.length; hctr++){
                if(spinHours.getItemAtPosition(hpos) == hoursarray[0]) {
                    hrfrm = 0.25;
                }
                else if (spinHours.getItemAtPosition(hpos) == hoursarray[1]) {
                    hrfrm = 0.5;
                }
                else if (spinHours.getItemAtPosition(hpos) == hoursarray[2]) {
                    hrfrm = 0.75;
                }
                else if (spinHours.getItemAtPosition(hpos) == hoursarray[hctr]) {
                    hrfrm = Double.parseDouble(hoursarray[hctr]);
                }

            }
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });

    ArrayAdapter<String> DayArrayAdapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_item, daysarray);
    spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_item);
    spinDays.setAdapter(DayArrayAdapter);
    int GP2 = DayArrayAdapter.getPosition(d);
    spinDays.setSelection(GP2);
    spinDays.setPrompt("Days Used Per Week");
    spinDays.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> DayadapterView, View view, int dpos, long l) {
            for(int dctr = 0; dctr<daysarray.length;dctr++)
            {
                if(spinDays.getItemAtPosition(dpos)==daysarray[dctr])
                {
                    dfrm = Integer.parseInt(daysarray[dctr]);
                }
            }
        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {

        }
    });

    ArrayAdapter<String> WeekArrayAdapter = new ArrayAdapter<String>(getActivity(),android.R.layout.simple_spinner_item, weeksarray);
    WeekArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinWeeks.setAdapter(WeekArrayAdapter);
    int GP3 = WeekArrayAdapter.getPosition(w);
    spinWeeks.setSelection(GP3);
    spinWeeks.setPrompt("Weeks used per Month");
    spinWeeks.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> WeekadapterView, View view, int wpos, long l) {
            for(int wkctr = 0; wkctr<weeksarray.length; wkctr++){
                if(spinWeeks.getItemAtPosition(wpos)==weeksarray[wkctr]) {
                    wfrm = Integer.parseInt(weeksarray[wkctr]);
                }
            }

        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {

        }
    });

    btnCalculate.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View rootView) {
            try {
                WattDouble = Double.parseDouble(etWattage.getText().toString());
                BillAmountS = etBillAmt.getText().toString();
                BillAmount = Double.parseDouble(BillAmountS);
                if (BillAmount >= 0 && BillAmount <= 108) {
                    PKwh = KWh[0];
                } else if (BillAmount >= 109 && BillAmount <= 338) {
                    PKwh = KWh[1];
                } else if (BillAmount >= 339 && BillAmount <= 573) {
                    PKwh = KWh[2];
                } else if (BillAmount >= 574 && BillAmount <= 1021) {
                    PKwh = KWh[3];
                } else if (BillAmount >= 1022 && BillAmount <= 2109) {
                    PKwh = KWh[4];
                } else if (BillAmount >= 2110 && BillAmount <= 3271) {
                    PKwh = KWh[5];
                } else if (BillAmount >= 3272 && BillAmount <= 4625) {
                    PKwh = KWh[6];
                } else if (BillAmount >= 4626 && BillAmount <= 7684) {
                    PKwh = KWh[7];
                } else if (BillAmount >= 7685) {
                    PKwh = KWh[8];
                } else {
                    Toast.makeText(getActivity().getApplicationContext(), "Invalid Amount", Toast.LENGTH_LONG);
                }
                /*Cost per hour = Rate x [(appliance wattage x 0.8 x 0.8) + (appliance wattage x 0.2)] / 1000)*/
                CPH = PKwh * (WattDouble / 1000);
                CPD = CPH * hrfrm;
                CPW = CPD * dfrm;
                CPM = CPW * wfrm;

                etHour.setText("PhP " + String.format("%.2f", CPH));
                etDay.setText("PhP " + String.format("%.2f", CPD));
                etWeek.setText("PhP " + String.format("%.2f", CPW));
                etMonth.setText("PhP " + String.format("%.2f", CPM));
            } catch (NumberFormatException e) {
                Toast.makeText(getActivity().getApplicationContext(), "Invalid Entry", Toast.LENGTH_LONG);


            }
    }

});
    return rootView;
}
}

点击次数上的原始视图是:(view v)我在网上读到一些内容,说它应该与我的inflater.inflate同名,所以我将其更改为(view rootView)。他们两个都没有发生。按钮仍然无法工作。

2 个答案:

答案 0 :(得分:1)

尝试检查您是否收到此消息

btnCalculate.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
    Toast.makeText(view.getContext(), "Onclick Listeber button calculate", Toast.LENGTH_LONG).show();

答案 1 :(得分:0)

您尚未初始化按钮。 首先初始化它

Button btnCalculate = (Button) rootView.findViewById(R.id.value);
btnCalculate.setOnClickListener( now ur function)