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 如何使用TextWatcher以编程方式使相互依赖的EditText更改彼此的值_Android_Textview_Android Edittext - Fatal编程技术网

Android 如何使用TextWatcher以编程方式使相互依赖的EditText更改彼此的值

Android 如何使用TextWatcher以编程方式使相互依赖的EditText更改彼此的值,android,textview,android-edittext,Android,Textview,Android Edittext,我根据用户的输入以编程方式创建了数量可变的EditText,并且每个EditText都与另一个配对(因此我创建的EditText数量是用户要求的两倍)。当用户在一中更改值时,我希望匹配的配对EditText也被更改 我有一个循环,它通过一个包含所有EditText的数组,并为每个EditText创建一个TextWatcher,但当我尝试在onTextChanged方法中更改文本时,程序崩溃 for(int i = 0; i < waysToSplit; i++) { editTex

我根据用户的输入以编程方式创建了数量可变的EditText,并且每个
EditText
都与另一个配对(因此我创建的EditText数量是用户要求的两倍)。当用户在一中更改值时,我希望匹配的配对
EditText
也被更改

我有一个循环,它通过一个包含所有EditText的数组,并为每个EditText创建一个
TextWatcher
,但当我尝试在
onTextChanged
方法中更改文本时,程序崩溃

for(int i = 0; i < waysToSplit; i++)
{
    editTexts[i] = new EditText(this);
    editTexts[i+waysToSplit] = new EditText(this); //The paired edittext
    editTexts[i].setId(i+1);
    editTexts[i].addTextChangedListener(new TextWatcher(){
            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

                //Change the paired box
                editTexts[i+waysToSplit].setText("changed");

            }

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

            @Override
            public void afterTextChanged(Editable s) {
                // TODO Auto-generated method stub         
            }
 }
for(int i=0;i
它不仅不允许我在ContextChanged方法中使用变量i(“不能引用在另一个方法中定义的内部类中的非最终变量i”),而且即使出于测试目的,我尝试使用类似于
editText[3].setText(“已更改”);
什么都没有发生


希望这是足够的代码来理解正在发生的事情。非常感谢任何帮助。我能找到的最接近的代码是,但那里没有任何代码。

您只需要将成对的
EditText
拖出到一个单独的声明中。然后您可以将其标记为
final
,并在侦听器中访问它

for(int i = 0; i < waysToSplit; i++)
{
    editTexts[i] = new EditText(context);
    final EditText paired = new EditText(context);//The paired edittext
    editTexts[i+waysToSplit] = paired;
    editTexts[i].setId(i+1);
    editTexts[i].addTextChangedListener(new TextWatcher(){
            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                //Change the paired box
                paired.setText("changed");
            }

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

            @Override
            public void afterTextChanged(Editable s) {
                // TODO Auto-generated method stub         
            }
    });
}
for(int i=0;i
您只需将成对的
EditText
拖出一个单独的声明。然后您可以将其标记为
final
,并在侦听器中访问它

for(int i = 0; i < waysToSplit; i++)
{
    editTexts[i] = new EditText(context);
    final EditText paired = new EditText(context);//The paired edittext
    editTexts[i+waysToSplit] = paired;
    editTexts[i].setId(i+1);
    editTexts[i].addTextChangedListener(new TextWatcher(){
            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                //Change the paired box
                paired.setText("changed");
            }

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

            @Override
            public void afterTextChanged(Editable s) {
                // TODO Auto-generated method stub         
            }
    });
}
for(int i=0;i