2012-08-11 65 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