Activity不会调用onActivityResult

时间:2012-03-27 05:45:39

标签: java android android-activity

程序没有调用onActivityResult,我已经在很多帖子中这样做,但我不能让它工作。

我正在使用Android 3.0模拟器。

这是GameScreen.java的代码

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) {      
  super.onActivityResult(requestCode, resultCode, data); 
  switch(requestCode) { 
    case 0: { 
      if (resultCode == Activity.RESULT_OK) {    
          String newText = data.getStringExtra("isRunning");          
          // TODO Update your TextView.
          isRunning = true;
      } 
      break; 
    } 
  } 
}
 public void pause(){
    clickListener = new OnClickListener() {         
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub              
            pause.setImageResource(R.drawable.pauseafter);
            isRunning = false;
            Intent intent = new Intent(Gamescreen.this, Shop.class);                  
            startActivityForResult(intent, 0);
        }
    };
}

这是代码Shop.java

public void returnButton(){
    resume.setOnClickListener(new OnClickListener() {           
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Intent intent = new Intent();
            setResult(Activity.RESULT_OK,intent);
            finish();
        }
    });
}   

4 个答案:

答案 0 :(得分:3)

测试我创建了简单的应用程序。没什么好看的,只是默认布局和两个活动。正确显示onActivityResult中的Toast。

这是完整的工作代码:

档案OnReturnActivity.java

package some.package;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Toast;

public class OnReturnActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Intent i = new Intent(this, GimmeReturn.class);
        startActivityForResult(i, 0);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        Toast.makeText(this, "Got Result " + String.valueOf(resultCode),     Toast.LENGTH_SHORT).show();
        super.onActivityResult(requestCode, resultCode, data);
    }
}

档案GimmeReturn.java

package some.package;

import android.app.Activity;
import android.os.Bundle;

public class GimmeReturn extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Toast.makeText(this, "Returning!", Toast.LENGTH_SHORT).show();
        setResult(RESULT_OK);
        finish();
    }
}

这两项活动都需要添加到Android清单。活动OnReturnActivity具有操作MAIN和类别LAUNCHER(并且作为应用程序的主要活动启动)。只添加了活动GimmeResult,没有任何IntentFilter。

答案 1 :(得分:1)

只需使用“RESULT_OK”.. 喜欢这个

Intent i=new Intent();
 setResult(RESULT_OK,i);
 finish();
OnActivityResult中的

switch(requestcode)
{
case 0:  if(resultcode==RESULT_OK)
     {

          //Log.e("check","in OAR");
          } 
}

答案 2 :(得分:0)

你的代码似乎我好了你的onActivityResult永远不会打电话或者只是不去处理案例0:你试过调试它吗?似乎没什么不寻常的

答案 3 :(得分:0)

使用来自名为Activity的setData。