2016-08-26 32 views
-2

我想從EditText字段中獲取值,但我肯定會錯過這裏的東西,因爲它始終只獲取默認(finnaly)值。 請幫助,我堅持了幾個小時。謝謝。 下面是代碼:EditText值長

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" /> 
+4

這是預期的行爲,'finally'是最後塊執行的代碼。 – Titus

回答

0

錯過了一些東西,因爲它使獲取默認

一定要做到 - >的finally塊當try塊退出時總是執行

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

所以,如果你想在煩惱解析用戶輸入的情況下設置默認值,設置delay = 3000L;之前進入try/catch塊。

+0

謝謝,你說得對,終於沒有想到會在那裏,對吧。 – galibardi

+0

但它仍然沒有讀取該值 – galibardi

+0

顯示'textStr'變量的內容 –

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

+0

謝謝,你說得對,終於不會在那裏,right.But它仍然沒有讀取該值 – galibardi

+0

分享完整的源代碼請。你調試了代碼嗎? – Tugrul

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; 

     } 
    });