2 qq 38813780 qq_38813780 于 2017.09.05 21:06 提问

安卓对Edittext监听的问题
 public class MainActivity extends ActionBarActivity {
    private EditText first;
    private EditText second;
    private TextView result;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        first =(EditText) findViewById(R.id.first);
        second=(EditText) findViewById(R.id.second);
        result=(TextView) findViewById(R.id.result);
        first.addTextChangedListener(textwatcher);
        second.addTextChangedListener(textwatcher);
    }
    private TextWatcher textwatcher =new TextWatcher() {
        int f=Integer.parseInt(first.getText().toString());
        int s=Integer.parseInt(second.getText().toString());
        @Override
        public void afterTextChanged(Editable arg0) {
            // TODO Auto-generated method stub
            result.setText(f+s);
        }
        @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
        }
    };

为什么编译时没有显示错误 但运行在模拟器上确程序出错停止运行了呢(XML文件是对的)

3个回答

ziyejinwei1994
ziyejinwei1994   2017.09.06 10:42
已采纳

除了判断楼上的方法,还有 result.setText(f+s); 你写成 result.setText(f+s+“”);转换成字符串

stone_you
stone_you   2017.09.06 09:58

int f=Integer.parseInt(first.getText().toString());
int s=Integer.parseInt(second.getText().toString());
这两句的时候你的edittext里面的内容是空的,调用parseInt会抛NumberFormatException
你可以打开log看一看

tydqcjj
tydqcjj   2017.09.06 10:45

做非空判断,打几个log就知道啦

Csdn user default icon
上传中...
上传图片
插入图片