Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何避免;空字符串异常";带编辑文本_Android - Fatal编程技术网

Android 如何避免;空字符串异常";带编辑文本

Android 如何避免;空字符串异常";带编辑文本,android,Android,我有一个由两个屏幕组成的简单应用程序 首先,我有EditText视图和按钮 当用户输入文本并按下按钮时,主屏幕会发生变化,用户可以看到键入的值以及返回上一个目的地的开关按钮 问题是当用户没有键入任何内容并按下按钮时。我有一个异常,它说,“字符串是空的” 我尝试过使用textChangedListener,但不起作用。 第一个屏幕由ViewModel和用于存储类型化值的可变LiveData对象组成 代码如下: 主屏幕: public class MainFragment extends Fragm

我有一个由两个屏幕组成的简单应用程序

首先,我有EditText视图和按钮

当用户输入文本并按下按钮时,主屏幕会发生变化,用户可以看到键入的值以及返回上一个目的地的开关按钮

问题是当用户没有键入任何内容并按下按钮时。我有一个异常,它说,“字符串是空的”

我尝试过使用textChangedListener,但不起作用。 第一个屏幕由ViewModel和用于存储类型化值的可变LiveData对象组成

代码如下:

主屏幕:

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
}