私は非常に単純なAndroidアクティビティを作成しました:
public class SimpleActivity extends Activity {
private EditText editText1;
private EditText editText2;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout verticalLayout = new LinearLayout(this);
verticalLayout.setOrientation(LinearLayout.VERTICAL);
editText1 = new EditText(this) {
@Override
protected void onTextChanged(CharSequence text, int start,
int lengthBefore, int lengthAfter) {
// TODO Auto-generated method stub
super.onTextChanged(text, start, lengthBefore, lengthAfter);
}
};
editText1.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
System.out.println(s.toString());
}
@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
}
});
editText1.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));
verticalLayout.addView(editText1);
editText2 = new EditText(this);
editText2.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));
verticalLayout.addView(editText2);
setContentView(verticalLayout);
}
public EditText getEditText1() {
return editText1;
}
public EditText getEditText2() {
return editText2;
}
}
このコードをAndroidデバイスで実行すると、コンポーネントの初期化中に、オーバーライドされたEditText.onTextChanged()メソッドとTextWatcher.onTextChanged()メソッドの両方が呼び出されます。また、メソッドeditText1.setText( "text")を呼び出すと、正しく呼び出されます。
RoboelectricテストランナーでSimpleActivityを作成すると、作成され、editText1 / editText2はnullになりませんが、コンポーネントの初期化中およびEditText.setText()の呼び出し中にEditText.onTextChanged()およびTextWatcher.onTextChanged()が呼び出されません。TextWatcherの作成方法仕事?これは私のアプリケーションの重要な部分であり、テキスト変更イベントを処理せずにテストすることはできません。
助けてください。