2017-10-08 57 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

相關問題