EditText值为Long

时间:2016-08-26 14:00:47

标签: java android android-layout

我试图从EditText字段中获取价值,但我肯定会错过这里的一些东西,因为它只能获得默认(finnaly)值。 请帮忙,我坚持了好几个小时。谢谢。 这是代码:

public class MainActivity extends AppCompatActivity {

public Long delay;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    EditText text= (EditText)findViewById(R.id.delay_in);
    try {
        String textStr = text.getText().toString();
        delay = Long.parseLong(textStr);
        //delay = Long.valueOf(textStr);
    } catch (NumberFormatException e) {
        e.printStackTrace();
        delay = 4000L;
    }
    SwapPicsActivity.delay=delay;

}
@Override
protected void onStop (){
    super.onStop();
    this.finish();
}

public void takePicture(View view) {
    Intent cameraIntent = new Intent(this, CameraActivity.class );
    startActivity(cameraIntent);
}
public void browseFile(View view) {
    Intent browseIntent = new Intent(this, BrowseFileActivity.class);
    startActivity(browseIntent);
}


}

和布局:

  <EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:inputType="numberDecimal"
    android:ems="10"
    android:id="@+id/delay_in"
    android:layout_gravity="center_horizontal|bottom"
    android:hint="Transition time (ms) :"
    android:editable="true"
    android:enabled="true" />

3 个答案:

答案 0 :(得分:1)

最后阻止总是有效。所以改变你的代码

EditText text= (EditText)findViewById(R.id.delay_in);

    try {
        String textStr = text.getText().toString();
        //delay = Long.parseLong(textStr);
        delay = Long.valueOf(textStr);
    } catch (NumberFormatException e) {
        e.printStackTrace();
        delay = 3000L;
    } finally {
        //sth log
    }

Doc is here

答案 1 :(得分:0)

  

在这里错过了一些东西,因为它不断获得默认

当然可以 - &gt;当try块退出时,finally块始终执行。

https://docs.oracle.com/javase/tutorial/essential/exceptions/finally.html

因此,如果您想在解析用户输入时遇到问题时设置默认值,请在输入delay = 3000L;块之前设置try/catch

答案 2 :(得分:0)

最后,它与听众合作,谢谢大家

  text = (EditText)findViewById(R.id.delay_in);
  text.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged (CharSequence s, int start, int    count, int after) {
        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
        }

        @Override
        public void afterTextChanged(Editable s) {
            delay = 3000L;
            try {
                SwapPicsActivity.text=text.getText().toString()+"_";
                String textStr = text.getText().toString();
                delay = Long.parseLong(textStr);

                //delay = Long.valueOf(textStr);
            } catch (NumberFormatException e) {
                e.printStackTrace();

            }
            SwapPicsActivity.delay=delay;

        }
    });