gpt4 book ai didi

java - 尝试在具有 TextChangedListener 的 edittext 上输入时应用程序崩溃

转载 作者:行者123 更新时间:2023-12-02 11:20:24 25 4
gpt4 key购买 nike

我试图创建一个自动计算百分比的应用程序。百分比值将显示在 TextView 中。 TextView 中显示的值将基于用户在编辑文本中输入的值。

我已经完成了该程序的代码创建,但是每次我尝试在编辑文本中输入一些数字时,它都会崩溃。

我希望你明白我在说什么。这是我的代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sample__table);
btnAdd = (Button)findViewById(R.id.btnAdd);
//btn Function
btnAdd.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
AddRow();
}
});
//end of btn function

//text changed
tl = (TableLayout) findViewById(R.id.tl);
row = new TableRow(this);
TableRow.LayoutParams lp = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT);
row.setLayoutParams(lp);
fruit = new EditText(this);
freq = new EditText(this);
perc = new TextView(this);
freq.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
ReCalculate();
}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
public void onTextChanged(CharSequence s, int start, int before, int count) {}
});
//text changed end
}
private void AddRow(){

row.addView(fruit);
row.addView(freq);
row.addView(perc);
tl.addView(row);
}
private void ReCalculate(){
float sum = 0f;
int rows = tl.getChildCount();
// Get the total
for (int i = 0; i < rows; i++) {
TableRow elem = (TableRow) tl.getChildAt(i);
sum+= Integer.parseInt(((EditText)elem.getChildAt(1)).getText().toString());
}
// Recalculate every row percent
for (int i = 0; i < rows; i++) {
TableRow elem = (TableRow) tl.getChildAt(i);
int amount​ = Integer.parseInt(((TextView)elem.getChildAt(1)).getText().toString());
((TextView)elem.getChildAt(1)).setText(String.valueOf(amount​/sum*100));
}
}
}

最佳答案

如果你想检测文本的变化,你可以使用onKeyListener:

    EditText edtText = (EditText)findViewById(R.id.editText);
edtText.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View view, int i, KeyEvent keyEvent) {
Toast.makeText(MainActivity.this, "Text changed!", Toast.LENGTH_SHORT).show();
return false;
}
});

它对我有用,希望有帮助。

关于java - 尝试在具有 TextChangedListener 的 edittext 上输入时应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46691833/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com