2017-10-08 32 views
-1

片段中的我的按钮不起作用。没有错误,我不知道它有什么问题。片段内的按钮即使没有错误也不起作用

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)。他们两个都没有发生什么事。按钮仍然不起作用。

+0

在哪里,你如何初始化btnCalculate? – merterpam

+0

btnCalculate =(Button)rootView.findViewById(R.id.btnCalculate); 我在最后查看后立即初始化它查看rootView = inflater.inflate(R.layout.genapp,container,false);线。谢谢! –

+0

如果它不是太长,你能发布完整的onCreateView代码(或简化版本)以及你的xml布局吗?有没有可能阻止点击事件的布局? – merterpam

回答

0

您还没有初始化您的按钮。 首先初始化

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

之后我已经初始化按钮最终查看rootView行。我应该再次在onClick中初始化它吗?谢谢! –

+0

不,如果你已经初始化它,那么你不需要再次初始化它 –

+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(); 
+0

是的,我得到祝酒。谢谢 –

+0

@JmJarkass这意味着你的问题解决了。 –

+1

这意味着你的点击事件正在工作,很可能是逻辑有问题,它不会产生你期望的输出。我的建议:尝试使用断点来调试程序。 – merterpam

相关问题