今天犯傻了,要写修改体重和身高的功能,因为findViewByid的使用姿势没有正确,自己拐到了要写回调函数的路上,当然我是不会写的,看网上资料貌似也有点麻烦,知道今天下午自己修改修改测试测试才发现so easy
public void setMyHeight(View view){
final EditText myHeightInput = new EditText(this);
myHeight = (TextView)view.findViewById(R.id.info_tv);
int inputType = InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL;
myHeightInput.setInputType(inputType);
new AlertDialog.Builder(this).setTitle(R.string.hint_height)
.setView(myHeightInput)
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
final String heightString = myHeightInput.getText().toString().trim();
if (heightString == null) {
Toast.makeText(SetMyInfoActivity.this, R.string.hint_invalid_height, Toast.LENGTH_LONG).show();
}
if (heightString.equals("")) {
Toast.makeText(SetMyInfoActivity.this, R.string.hint_invalid_height, Toast.LENGTH_LONG).show();
}
double height = Double.parseDouble(heightString);
if (height < 50 || height > 250) {
Toast.makeText(SetMyInfoActivity.this, R.string.hint_invalid_height, Toast.LENGTH_LONG).show();
} else {
myHeight.setText(heightString);
}
}
})
.setNegativeButton("取消", null)
.show();
这里的重点就是myHeight是我定义的一个全局的TextView变量,在这之前我1,先将这个myHeight定义在了这个函数里它会提示错误,就是反正在onclick里用不了,不能再inner类里用,要声明称final的,2,我又换成在inner class里声明,但是会出错你知道为啥吗,因为dialog里没有textView,你肯定find不到啊,–>所以我就在activity刚开始就生命了private 类型的这个TextView,然后另一个重点就是我这个函数的参数view,因为我是在listview里,所以用findviewbyid,必须要是在他所在的item里find,要不然是没用的,所以用的view.findviewbyid
就是这样,继续加油