Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.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
Java 将文本值编辑为长文本_Java_Android_Android Layout - Fatal编程技术网

Java 将文本值编辑为长文本

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

我试图从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" />

这里遗漏了一些内容,因为它一直在获取默认值

确实如此->当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不应该在那里,对吧。它从布局中获取文本值,如果有的话,但不是用户输入,所以可能是布局的东西。为什么?除非
中的ID
delay\u被多次使用,否则它应该指向EditText。您是否有其他元素使用
id中的
delay\u?谢谢,您是对的,最终不应该在那里,对吧。但它仍然无法读取该值。请共享完整的源代码。你调试代码了吗?