Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android中设置并获取Edittext中的Id_Android_Android Layout_Android Edittext - Fatal编程技术网

在android中设置并获取Edittext中的Id

在android中设置并获取Edittext中的Id,android,android-layout,android-edittext,Android,Android Layout,Android Edittext,我在同一视图中使用多个Edittext。因此,我与单击哪个EditText视图相冲突。所以在这里先设置id,然后设置id。但无法获取id,请单击可编辑文本 我的代码: 如果我使用focuschangelistener,则可以: txtBox.setOnFocusChangeListener(new OnFocusChangeListener() { private int id_focus;

我在同一视图中使用多个Edittext。因此,我与单击哪个EditText视图相冲突。所以在这里先设置id,然后设置id。但无法获取id,请单击可编辑文本

我的代码:

如果我使用focuschangelistener,则可以:

txtBox.setOnFocusChangeListener(new OnFocusChangeListener()
                    {
                        private int id_focus;


                        @Override
                        public void onFocusChange(View vv, boolean hasFocus) 
                        {
                            if (hasFocus == false)
                            {
                                System.out.println("FALSE "+vv.getId());
                            }else {
                                id_focus=vv.getId();

                                System.out.println("TRUE ID "+vv.getId());
                                for (int k = 0; k < edit_text_value_list.size(); k++){
                                    if (edit_text_value_list.get(k).getId() == id_focus) {
                                        Toast.makeText(context, "you have clicked=="+elemName.get(k).toString()+ edit_text_value_list.get(k).getText().toString(), 5000).show();
                                    }
                                }
试试这个


EditText txtBox=EditText findviewbydr.id.edittext1//,用于xml中

请尝试以下代码以获取存储EditText值:-

在edittext上设置id

从edittext获取值

有关更多信息,请参阅以下链接:-


在您的代码中,您的edittext将被一个id覆盖,因此它将发生,并且您每次都获得相同的id

--------你的代码----------

for(int j=0, j=<3; j++){
EditText txtBox = new EditText(context);
    txtBox.setId(j);
}
-----更改代码--------

这将发生,因为每次您需要在这里为您的组件创建新对象时,您只是全局声明它

private EditText;

    for(int j=0, j=<3; j++){
     txtBox = new EditText(context);
        txtBox.setId(j);
    }

在这里,我可以看到你需要4编辑文本添加到您的布局。因此,创建一个大小为4的edittext数组。如下图所示:

Private EditText txtBox[] = new EditText[4] ;
EditText editFirst = (EditText)findViewById(idsForEditText[0]);
EditText editSecond = (EditText)findViewById(idsForEditText[1]);
EditText editThird = (EditText)findViewById(idsForEditText[2]);
EditText editFourth = (EditText)findViewById(idsForEditText[3]);
现在您需要为每个edittext创建ID,因此您必须创建另一个整数数组,该数组将包含ID,是的,它的大小将再次为4

private int idsForEditText[] = new int[4];
现在,您将在ids数组中放置ID:

    for(int j = 0; j<txtBox.length; i++){
       txtBox[j].setId(j);
       idsForEditText[j] = j;
}
editFirst.addTextChangedListener等


希望这将对您有所帮助:

我认为,您创建自定义类,可能会对您有所帮助,请使用此:

List<EditText> edittext_list = new ArrayList<EditText>();
 Private EditText txtBox ;

for(int j=0, j=<3; j++){
txtBox = new EditText(context);
edittext_list.add(txtBox);
    txtBox.setId(j);
getEditTextValue(txtBox);
}
在addTextChangedListenerlistener中执行以下操作:

 private void getEditTextValue(final EditText txtBox3) {
    txtBox3.addTextChangedListener(new TextWatcher() {

                    @Override
                    public void afterTextChanged(Editable s) {
                        if (s.length() == 0)
                         {
                             return;
                         }

    System.out.println("txtBox3 "+ txtBox3.getId());
            for (int k = 0; k < edittext_list .size(); k++){
                if (edittext_list .get(k).getId() == txtBox3.getId()) {
//Do, whatevery your clicked editext after input.
      }
     }
    }

                    @Override
                    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                        // TODO Auto-generated method stub

                    }

                    @Override
                    public void onTextChanged(CharSequence s, int start, int before, int count) {
                        // TODO Auto-generated method stub

                    }

                });    

        }
这太简单了

声明整数变量,如下代码所示:

 numberofpasses[totalitems].addTextChangedListener(new TextWatcher() {
    int total;
    String value;
    int id=numberofpasses[totalitems].getId();
    @Override
    public void afterTextChanged(Editable arg0) {
        // TODO Auto-generated method stub
       value=arg0.toString();
       if(!value.equals(""))
       {
           total=Integer.valueOf(prc)*Integer.valueOf(value);
           txttotal[id].setText(String.valueOf(total));
       }
       }

    @Override
    public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
            int arg3) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onTextChanged(CharSequence arg0, int arg1, int arg2,
            int arg3) {
        // TODO Auto-generated method stub

    }
});

尝试int id=txtBox.getId;每次单击edittext,我都会得到1。我可以通过编程方式从中创建edittext。你们并没有看到上面。所以,我也看到了这个教程,但如何在上面使用我的问题。任何想法,addTextChangedListener然后获取id。实际上我在外部完成了,但我关心的是如何在后TextChanged中获取id。看,我的密码。
EditText editFirst = (EditText)findViewById(idsForEditText[0]);
EditText editSecond = (EditText)findViewById(idsForEditText[1]);
EditText editThird = (EditText)findViewById(idsForEditText[2]);
EditText editFourth = (EditText)findViewById(idsForEditText[3]);
List<EditText> edittext_list = new ArrayList<EditText>();
 Private EditText txtBox ;

for(int j=0, j=<3; j++){
txtBox = new EditText(context);
edittext_list.add(txtBox);
    txtBox.setId(j);
getEditTextValue(txtBox);
}
 private void getEditTextValue(final EditText txtBox3) {
    txtBox3.addTextChangedListener(new TextWatcher() {

                    @Override
                    public void afterTextChanged(Editable s) {
                        if (s.length() == 0)
                         {
                             return;
                         }

    System.out.println("txtBox3 "+ txtBox3.getId());
            for (int k = 0; k < edittext_list .size(); k++){
                if (edittext_list .get(k).getId() == txtBox3.getId()) {
//Do, whatevery your clicked editext after input.
      }
     }
    }

                    @Override
                    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                        // TODO Auto-generated method stub

                    }

                    @Override
                    public void onTextChanged(CharSequence s, int start, int before, int count) {
                        // TODO Auto-generated method stub

                    }

                });    

        }
 numberofpasses[totalitems].addTextChangedListener(new TextWatcher() {
    int total;
    String value;
    int id=numberofpasses[totalitems].getId();
    @Override
    public void afterTextChanged(Editable arg0) {
        // TODO Auto-generated method stub
       value=arg0.toString();
       if(!value.equals(""))
       {
           total=Integer.valueOf(prc)*Integer.valueOf(value);
           txttotal[id].setText(String.valueOf(total));
       }
       }

    @Override
    public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
            int arg3) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onTextChanged(CharSequence arg0, int arg1, int arg2,
            int arg3) {
        // TODO Auto-generated method stub

    }
});