Java 将文本值编辑为长文本
我试图从EditText字段中获取值,但我肯定错过了一些东西,因为它一直只获取默认值(finnaly)。 请帮帮我,这件事我已经坚持了好几个小时了。非常感谢。 代码如下:Java 将文本值编辑为长文本,java,android,android-layout,Java,Android,Android Layout,我试图从EditText字段中获取值,但我肯定错过了一些东西,因为它一直只获取默认值(finnaly)。 请帮帮我,这件事我已经坚持了好几个小时了。非常感谢。 代码如下: public class MainActivity extends AppCompatActivity { public Long delay; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedI
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" />
这里遗漏了一些内容,因为它一直在获取默认值
确实如此->当try块退出时,finally块始终执行
因此,如果您想在解析用户输入时设置默认值,请设置
delay=3000L代码>在输入之前try/catch
阻塞。最后阻塞始终有效。这样就可以改变你的代码了
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
}
最后,它与一位听众合作,谢谢大家
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;
}
});
这是预期的行为,finally
是执行的最后一块代码。谢谢,你说得对,finally不应该在那里,对吧。它从布局中获取文本值,如果有的话,但不是用户输入,所以可能是布局的东西。为什么?除非
中的IDdelay\u被多次使用,否则它应该指向EditText。您是否有其他元素使用
id中的delay\u?谢谢,您是对的,最终不应该在那里,对吧。但它仍然无法读取该值。请共享完整的源代码。你调试代码了吗?