android - 我可以得到编辑文本离开事件吗

标签 android android-edittext

我希望在 Edittext 离开事件后将 edittext“文本”反射(reflect)在 textview 上是否有可能在 android 中我尝试过这个可以有人告诉我有什么问题或它在 android 中不可能吗?

我尝试了所有可能的事件

objNextbet=getNextBets();
            Button btnbetNow =(Button)findViewById(R.id.btnBetNow);
            try
            {
            SimpleExpandableListAdapter expListAdapter =
                new SimpleExpandableListAdapter(
                    this,
                    createBetGroupList("next"), // groupData describes the first-level entries
                    R.layout.group_row, // Layout for the first-level entries
                    new String[] { "BetGroup" },    // Key in the groupData maps to display
                    new int[] { R.id.childname },       // Data under "colorName" key goes into this TextView
                    createBetChildList("next") ,    // childData describes second-level entries
                    R.layout.child_row, // Layout for second-level entries
                    new String[] { "betText","betRate","betID" },   // Keys in childData maps to display
                    new int[] { R.id.txtBetText, R.id.txtdecRate,R.id.txtstrBetID}  // Data under the keys above go into these TextViews

                ) {
                @Override 
                public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent)
                {          
                     final View childview = super.getChildView(groupPosition, childPosition,isLastChild, convertView, parent); 


                     final TextView txtBetText = (TextView)childview.findViewById(R.id.txtBetText);
                     final TextView txtstrBetID = (TextView)childview.findViewById(R.id.txtstrBetID);
                     final TextView txtdecRate = (TextView)childview.findViewById(R.id.txtdecRate);                  


                     String strBetGroup="";
                     for(int n = 0 ; n < objNextbet.size() ; n++ ) 
                        {
                         if(objNextbet.get(n).getBetText().toString().equals(txtBetText.getText().toString()))
                          {
                             strBetGroup=objNextbet.get(n).getstrBetGroupName().toString();
                          }
                        }



                     Button btnBetNow = (Button)childview.findViewById(R.id.btnBetNow);
                     btnBetNow.setTag(txtBetText.getText() + "-" +
                             txtstrBetID.getText() +"-" +txtdecRate.getText()+"-"+strBetGroup);

                     btnBetNow.setOnClickListener(new OnClickListener() 
                     {    
                        @Override             
                        public void onClick(View view) 
                        {                 
                           try
                           {
                               String TagValue=(String) view.getTag();
                               final String bet[] = TagValue.split("-");

                               final Dialog dialogbetNow = new Dialog(myucontext);
                               /** Disabling The PopUp Title Bar */
                               dialogbetNow.requestWindowFeature(Window.FEATURE_NO_TITLE); 

                               /** Set The Content For The PopUp */
                               dialogbetNow.setContentView(R.layout.popupbet);

                                /** Set The PopUp Deposit Balance */ 
                                  TextView txtCashcredit =(TextView)dialogbetNow.findViewById(R.id.txtCashcredit); 
                                  txtCashcredit.setText(Double.toString(objCGUserProfile.getUsedCredit()).toString());

                                  final TextView txtbetBetText = (TextView)dialogbetNow.findViewById(R.id.txtbetBetText);
                                  txtbetBetText.setText(bet[0]);

                                  TextView txtbetRate = (TextView)dialogbetNow.findViewById(R.id.txtbetRate);
                                  txtbetRate.setText(bet[2]);

                                  Button btnpopupBetNow = (Button)dialogbetNow.findViewById(R.id.btnpopupBetNow);
                                  btnpopupBetNow.setOnClickListener(new OnClickListener()
                              {

                                @Override
                                public void onClick(View v)
                                {

                                    final EditText ETStake = (EditText)dialogbetNow.findViewById(R.id.ETStake);

                                    if(ETStake.getText().toString().equals(""))
                                    {
                                        TextView txtError =(TextView)dialogbetNow.findViewById(R.id.txtError);
                                        txtError.setTextColor(Color.RED);
                                        txtError.setText("Please Enter cash.");
                                    }
                                    else
                                    {
                                        final double cash = Double.valueOf((String)ETStake.getText().toString()).doubleValue();

                                        ETStake.setOnFocusChangeListener(new EditText.OnFocusChangeListener()
                                        {    
                                            @Override
                                            public void onFocusChange(View v,boolean hasFocus) 
                                            {
                                                if (!hasFocus)
                                                {
                                                    // TODO: the editText has just been left 
                                                    TextView txtRisk = (TextView)dialogbetNow.findViewById(R.id.txtRisk);
                                                    TextView txtReturn = (TextView)dialogbetNow.findViewById(R.id.txtReturn);
                                                    txtRisk.setText(Double.toString(cash).toString());
                                                    double stake = Double.parseDouble(ETStake.getText().toString());
                                                    double rate = Double.parseDouble(bet[2]);
                                                    double betReturn = stake * rate;
                                                    txtReturn.setText(Double.toString(betReturn));
                                                }

                                            }
                                        });

                                    }
                                }
                            });

                                  ImageView imgCancel = (ImageView)dialogbetNow.findViewById(R.id.imgCancel);
                                  imgCancel.setOnClickListener(new OnClickListener() {

                                    @Override
                                    public void onClick(View v) 
                                    {
                                         try 
                                         {
                                           dialogbetNow.cancel();   
                                         }
                                         catch (Exception e)
                                         {
                                         }  
                                    }
                                });

                              dialogbetNow.show();

                           }

                           catch(Exception ex)
                           {
                               ex.toString();
                           }
                        } 
                        });                  

                     return childview;     
                } 

最佳答案

您可以在 Activity 的 onCreate 方法内的 EditText 上注册一个 OnFocusChangeListener:

final EditText et = (EditText)findViewById(R.id.my_edit_text);
et.setOnFocusChangeListener(new View.OnFocusChangeListener()
{
    @Override
    public void onFocusChange(View v, boolean hasFocus)
    {
        if (!hasFocus)
            // TODO: the editText has just been left
    }
});

此处 onFocusChangev 参数是您的 EditText 控件。

此外,如果您想在 EditText 内容的每次更改时更新您的 TextView,您应该将更新代码放在 public void afterTextChanged 中(Editable s) 已注册的 TextWatcher 方法。

//确保 txtRisk TextView 是 dialogbetNow View 的一部分。

关于android - 我可以得到编辑文本离开事件吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5830995/

相关文章:

android - Gradle 扩展 assembleRelease

android - 支持所有中大型安卓屏幕的背景图片大小

java - Android 无法在我的设备上创建 SQL 数据库

android - Android 中 ScrollView 中的 EditText

android - 将 addtextchangedlistener 用于 NavigationView Edittext 时出错

android - 从 Android 中的 GridLayout 和 EditBox 中删除默认焦点颜色

java - 保存图像时添加 toast Eclipse

java - 安卓短信API

android - 底部没有线条的EditText

Android sqlite 数据库 - 我从哪里开始,因为记事本教程已经消失了?