我的代码遇到了一些问题。在我的片段中,我在null对象引用上得到了类似addTextChangedListener android.text.TextWatcher的错误。 我是Android环境中的新手
我想在我的EditText字段中创建最小字符5和app崩溃。
编辑1:
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_my_game_details, container, false);
typeMessageToPost = view.findViewById(R.id.Details);
typeMessageToPost.addTextChangedListener(mTextEditorWatcher);
return view;}
private final TextWatcher mTextEditorWatcher=new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
}
@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
number_of_character.setText(String.valueOf(140-s.length()));
}
};}
答案 0 :(得分:1)
您似乎没有为typeMessageToPost分配任何内容。在片段中,您使用onCreateView()而不是onCreate()来初始化视图。因此,将onCreate()方法更改为:
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.your_layout, container, false);
typeMessageToPost = view.findViewById(R.id.your_edit_text_id);
typeMessageToPost.addTextChangedListener(mTextEditorWatcher);
return view;
}
修改强>
检查你是否至少有5个字符是没什么大不了的:
@Override
public void afterTextChanged(Editable s) {
if (s.length() < 5) {
number_of_character.setText("Error text you want to display");
} else {
// Whatever you want to do once the input text has at least 5 characters
}
}