我试图从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" />
答案 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
}
答案 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;
}
});