从EditText获取文本而不使用XML id

时间:2014-09-29 13:32:29

标签: android

我正在以编程方式创建一个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();
            }
        });

2 个答案:

答案 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查找将是一种浪费,因为您已经有了对它的引用。