片段中的我的按鈕不起作用。沒有錯誤,我不知道它有什麼問題。片段內的按鈕即使沒有錯誤也不起作用
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)
。他們兩個都沒有發生什麼事。按鈕仍然不起作用。
在哪裏,你如何初始化btnCalculate? – merterpam
btnCalculate =(Button)rootView.findViewById(R.id.btnCalculate); 我在最後查看後立即初始化它查看rootView = inflater.inflate(R.layout.genapp,container,false);線。謝謝! –
如果它不是太長,你能發佈完整的onCreateView代碼(或簡化版本)以及你的xml佈局嗎?有沒有可能阻止點擊事件的佈局? – merterpam