Android 如何避免;空字符串异常";带编辑文本
我有一个由两个屏幕组成的简单应用程序 首先,我有EditText视图和按钮 当用户输入文本并按下按钮时,主屏幕会发生变化,用户可以看到键入的值以及返回上一个目的地的开关按钮 问题是当用户没有键入任何内容并按下按钮时。我有一个异常,它说,“字符串是空的” 我尝试过使用textChangedListener,但不起作用。 第一个屏幕由ViewModel和用于存储类型化值的可变LiveData对象组成 代码如下: 主屏幕:Android 如何避免;空字符串异常";带编辑文本,android,Android,我有一个由两个屏幕组成的简单应用程序 首先,我有EditText视图和按钮 当用户输入文本并按下按钮时,主屏幕会发生变化,用户可以看到键入的值以及返回上一个目的地的开关按钮 问题是当用户没有键入任何内容并按下按钮时。我有一个异常,它说,“字符串是空的” 我尝试过使用textChangedListener,但不起作用。 第一个屏幕由ViewModel和用于存储类型化值的可变LiveData对象组成 代码如下: 主屏幕: public class MainFragment extends Fragm
public class MainFragment extends Fragment {
private MainViewModel mViewModel;
public static MainFragment newInstance() {
return new MainFragment();
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.main_fragment, container, false);
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mViewModel = new ViewModelProvider(this).get(MainViewModel.class);
// TODO: Use the ViewModel
EditText editText = getView().findViewById(R.id.valueEntry);
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
return;
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
mViewModel.setValue(Float.valueOf(editText.getText().toString()));
}
@Override
public void afterTextChanged(Editable editable) {
return;
}
});
Button button = getView().findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
MainFragmentDirections.MoveToSecond action = MainFragmentDirections.moveToSecond( );
action.setVal(mViewModel.getValue());
Navigation.findNavController(view).navigate(action);
}
});
}
ViewModel实例:
public class MainViewModel extends ViewModel {
private MutableLiveData<Float> value = new MutableLiveData<>();
public void setValue(Float c){value.setValue(c);}
public Float getValue()
{
return value.getValue();
}
public类MainViewModel扩展了ViewModel{
私有MutableLiveData值=新的MutableLiveData();
public void setValue(Float c){value.setValue(c);}
公共浮点getValue()
{
返回值。getValue();
}
当用户按下按钮时使用此代码
if (!entered_sting.equals(""))
{
// show text to other works
}
如果在第一个按钮按下事件中,一个更干净的选项是检查空字符串,而不是检查
等于(“”
这不需要实现TextWatcher就可以了。谢谢:不客气。这很简单。我是一名14岁的程序员。如果你愿意,你可以关注我的Twitter,我会在那里发布关于编程的推文。我的DMs在那里是开放的。
if (!entered_sting.trim().isEmpty())
{
// show text to other works
}