2014-11-02 166 views
2

我試圖從第二個活動中獲取數據,因此我使用startActivity方法來實現此目標。爲什麼在這種情況下startActivityForResult()方法不起作用

final EditText editText=(EditText)findViewById(R.id.edit); 
    final String text=editText.getText().toString(); 
    button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Intent intent=new Intent(); 
      intent.setData(Uri.parse(text); 
      setResult(RESULT_OK,intent); 
      finish(); 
     } 
    }); 

什麼讓我困惑的是當我把 「文」 Uri.parse(),這是行不通的,所以我改變Uri.parse(editText.getText()。的toString),它只是作品。

那麼他們之間究竟有什麼不同呢?

回答

0

既然你這樣做:

final String text=editText.getText().toString(); 

final關鍵字「凍結」的文本值(以可能是一個空字符串,因爲它看起來你是在初始化函數)。因此,無論何時在onClick()內使用text,它都會引用凍結值text。如果你想的editText在該按鈕被點擊時的電流值,你需要獲取內部onClick()值:

intent.setData(Uri.parse(editText.getText().toString())); 

請注意,你需要爲editTextfinal關鍵字,否則你將無法在onClick()之內使用它。

1

,因爲這將有不同的價值:

你把這個代碼onClick

final String text=editText.getText().toString(); 

所以,Uri.parse(text)將的onClick發生之前返回文本

但是,如果您使用Uri.parse(editText.getText().toString),它將在onClick調用(實時)時解析文本。

相關問題