此代码创建一个搜索栏,并使搜索栏创建与滑块所在的一样多的 EditText 字段/删除那些太多的字段。此代码在 OnActivityCreated
final LinearLayout linearLayout = (LinearLayout) getActivity()
.findViewById(R.id.npv_calcfields);
EditText editText = new EditText(getActivity());
editText.setId(i);
editText.setLayoutParams(new LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
SeekBar bar = (SeekBar) getActivity().findViewById(R.id.npv_seekbar);
final TextView selection = (TextView) getActivity()
.findViewById(R.id.npv_selected);
bar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
public void onProgressChanged(SeekBar seekbar, int progress,
boolean fromUser) {
selection.setText("You have selected " + progress + " periods.");
if (progress == 0) {
String normalstring = getActivity().getResources()
.getString(R.string.npv1);
selection.setText(normalstring);
}
if (i > progress) {
while (i > progress) {
i--;
EditText editText = (EditText) getActivity()
.findViewById(i);
linearLayout.removeView(editText);
}
} else {
while (i < progress) {
EditText editText = new EditText(getActivity());
editText.setId(i);
editText.setLayoutParams(new LayoutParams(
LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
linearLayout.addView(editText);
editText.setHint("Cash Flow " + i);
i++;
}
}
}
public void onStopTrackingTouch(SeekBar arg0) {
}
public void onStartTrackingTouch(SeekBar arg0) {
}
});
此代码在通用类区域中:
int i = 0;
EditText r = (EditText) getActivity().findViewById(R.id.npv_rate);
Button calc = (Button) getActivity().findViewById(R.id.npv_calc);
EditText[] DynamicField = new EditText[16];
现在我希望用户将数字输入到那些 edittext 字段中,然后我想对它们进行一些数学运算:Entry / (Math.pow(1+r, i)
使用i
字段的 id。因此,第一个条目应按以下方式计算:entry/(1+r)^0
。这是我尝试过的,但它不起作用。它只是在启动时崩溃。
calc.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
Double r1 = Double.parseDouble(r.getText().toString());
EditText editText = (EditText) getActivity().findViewById(i);
TextView answer = (TextView) getActivity().findViewById(R.id.npv_answer);
double[] CashFlows;
CashFlows = new double[i];
double result = 0;
CashFlows[i] = (Double.parseDouble(editText.getText()
.toString())) / (Math.pow(1 + r1, i));
for (double d : CashFlows) {
result += d;
}
answer.setText("answer is " + result);
}
});
我做错什么了?顺便说一句,只有最后一个代码段不起作用。如果我评论说一切都很好,我测试了它:) 只是不做任何事情 :)
好的,你可以在这里看到的错误日志的一点背景:http: //pastebin.com/G8iX6Pkm 编辑:整个类文件可以在这里看到:http: //pastebin.com/dxA91dst,整个项目可以在这里找到:https ://github.com/killerpixler/Android-Financial-Calculator.git
类文件是一个片段,当有人单击 Main 活动中的列表项时,该片段会加载到 DetailsActivity 中。就像我说的错误必须在按钮侦听器中,因为它在我添加它之前就已经工作了。