在不使用XML id的情况下从EditText获取文本

在不使用XML id的情况下从EditText获取文本

问题描述:

我正在以编程方式创建一个EditText字段,其输入值需要先阅读。但是当我尝试阅读我的OnClickListener中的文本时,它说textNewProdPrice在内部类中被访问,并且应该声明为final。我如何解决这个问题?这是我到目前为止有:在不使用XML id的情况下从EditText获取文本

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

使用'setId()'方法 – 2014-09-29 13:33:15

+0

或者只是让它最终! :O – Pavlos 2014-09-29 13:34:36

+0

@SagarPilkhwal据我所知,这个ID不是XML,所以你不能像这样使用'findViewById(R.id.entry)' – user2315641 2014-09-29 13:35:41

充分利用EditTextfinal

final EditText textNewProdPrice = new EditText(this); 

,或者如果你想参考出来的块文档setId()的使用setId()

设置此视图的标识符。标识符在该视图的层次结构中不必是唯一的。标识符应该是一个正数。

EditText textNewProdPrice = new EditText(this); 
textNewProdPrice.setId(1001); //Your any random id 
+1

编辑:它在onCreate中最终确定是有意义的,我只是混合了范围。谢谢你的回答,我会尽快接受。 使它在onCreate内部最终没有价值阅读文本,而在onClick它给了我这个说法错误EditText不能应用于android.view.View.OnClickListener – user2315641 2014-09-29 13:41:22

+0

伟大的工作你:)快乐编码。 。! – 2014-09-29 13:48:53

就宣布你的EditText最终的建议:

final EditText textNewProdPrice = new EditText(this); 

做了一个的EditText ID查找将是一种浪费,因为你已经对它的引用。