我正在以编程方式创建一个EditText字段,其输入值我需要读取。但是当我尝试读取OnClickListener中的文本时,它表示textNewProdPrice在内部类中被访问并且应该被声明为final。我该如何解决这个问题?这就是我到目前为止所做的:
EditText textNewProdPrice = new EditText(this);
textNewProdPrice.setTextColor(Color.WHITE);
textNewProdPrice.setHint("New Value");
textNewProdPrice.setTextSize(25);
textNewProdPrice.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_SIGNED | InputType.TYPE_NUMBER_FLAG_DECIMAL);
Button buttonPriceChange = new Button (this);
buttonPriceChange.setClickable(true);
buttonPriceChange.setBackgroundResource(R.drawable.buttonmain);
buttonPriceChange.setTextColor(Color.WHITE);
buttonPriceChange.setText("Change");
buttonPriceChange.setTextSize(25);
prodDetails.addView(textNewProdPrice);
prodDetails.addView(buttonPriceChange);
buttonPriceChange.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String newProductPrice = textNewProdPrice.getText().toString();
ContentValues values = new ContentValues();
values.put(COLUMN_PRODUCTS_PRICE, newProductPrice);
dataBase.update(TABLE_NAME_PRODUCTS, values, "_id='" + currentProductID + "'");
Intent intent = new Intent(products_details.this, products_details.class);
intent.putExtra("currentProduct", currentProductID);
startActivity(intent);
finish();
}
});
答案 0 :(得分:1)
制作EditText
final
final EditText textNewProdPrice = new EditText(this);
或者如果您希望将其引用到阻止之外,请使用setId()
文档setId():
设置此视图的标识符。标识符在此视图的层次结构中不必是唯一的。标识符应为正数。
EditText textNewProdPrice = new EditText(this);
textNewProdPrice.setId(1001); //Your any random id
答案 1 :(得分:1)
按照建议声明你的EditText final:
final EditText textNewProdPrice = new EditText(this);
为EditText执行ID查找将是一种浪费,因为您已经有了对它的引用。