2012-08-11 47 views
0

這裏是第一次活動代碼:OnActivityResult不會被調用

package com.android.shopping; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.ListView; 
import android.widget.TextView; 

public class MainActivity extends Activity implements OnClickListener{ 

    Button btn; 
    ListView lista; 
    TextView tekst; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     btn=(Button) findViewById(R.id.button1); 
     lista=(ListView) findViewById(R.id.listView1); 
     btn.setOnClickListener(this); 
     tekst=(TextView) findViewById(R.id.textView1); 
    } 

    @Override 
    public void onClick(View v) { 
     Intent i=new Intent(this, DetailsActivity.class); 
     startActivityForResult(i, RESULT_OK); 

    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if(resultCode==RESULT_OK){ 
     String item=data.getStringExtra("data").toString(); 
     tekst.setText(item.toString()); 
    } 

    } 
    } 

,第二個:

package com.android.shopping; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 

public class DetailsActivity extends Activity implements OnClickListener{ 
    Button save; 
    EditText details; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_details); 
     save=(Button) findViewById(R.id.button1); 
     details=(EditText) findViewById(R.id.editText1); 
     save.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View v) { 
     Intent in=new Intent(); 
     in.putExtra("data", details.getText().toString()); 
     setResult(RESULT_OK, in); 
     finish(); 

    } 


} 

所以在與按鈕的第一個活動我所說的第二個活動。用戶在文本框中輸入某些內容,然後單擊一個按鈕,將其恢復爲第一個活動。那裏他鍵入的文本應該顯示在第一個活動的textView中,但事實並非如此。請幫我解決這個問題。

+0

你應該接受一個適合你的答案,這樣其他人可能會覺得它有用。 – 2012-08-13 00:10:40

回答

0

你確定你的代碼超過了setResult()和finish()嗎?

onActivityResult()在新活動中當startActivityForResult(<new_activity_context>)setResult()被調用。

另外,你能確保你的Manifest沒有android:launchMode="singleInstance"

1

在你MainActivity類,你應該改變你開始行DetailsActivity

'startActivityForResult(I,1);'

請注意,您不應使用實際值爲-1的RESULT_OK。在sdk文件中,它表示如果您使用負值作爲第二個參數,則startActivityForResult簡單地視爲startActivity。這就是爲什麼你不能得到結果DetailsActivity

順便說一句,第二個參數是request_code。我不認爲讓request_code和result_code相同是個好主意。

+0

+1研究得很好! – 2012-08-11 15:54:22

+0

工作,謝謝。 – user1477107 2012-08-11 18:52:39

+0

@ user1477107你好,也許你是這個網站的新來者。如果你發現我的答案可以解決你的問題。你可以給它一個「勾號」來接受我的答案。這會鼓勵更多的人來幫助你。 – Huang 2012-08-12 00:07:14