为什么在Android中没有调用onActivityResult?

时间:2011-07-19 04:53:56

标签: android android-activity onactivityresult

当我的应用程序启动时,我正在显示启动画面。该页面已显示10秒,在线程上运行。

当它切换到结果上的新活动时,我想要点击服务器中的URL,我将获得一个返回值,我可以将其用于我的进一步实现。

这是我的代码:

private final int SPLASH_DISPLAY_LENGHT = 1000;

new Handler().postDelayed(new Runnable()
        {
            @Override
            public void run() 
            {
                Log.e("Handler ","run");
                Intent myIntent = new Intent(getApplicationContext(), CaptureActivity.class);
                startActivityForResult(myIntent, imgDL);
                finish();
            }
        }, SPLASH_DISPLAY_LENGHT);



public void onActivityResult(int requestCode, int resultCode, final Intent data) 
      {
          super.onActivityResult(requestCode, resultCode, data);
          if (requestCode == imgDL) 
          {     
              Log.e("onActivity Result","");
              urlHitMethod("http://XXXXXXXXXXXXXXXXXX.com/banner_scan");
          }
      }

但是这里没有调用onActivityResult。如何解决这个问题?

4 个答案:

答案 0 :(得分:4)

另外,请注意,如果你的基础活动(一个调用startActivityForResult)不能在清单中使用标志noHitory。

如果这样做,将永远不会调用onActivityResult。

答案 1 :(得分:1)

试试这个

Intent myIntent = new Intent(activity.this,CaptureActivity.class);

@Override
public void onActivityResult(int requestCode, int resultCode, final Intent data) 
      {
          super.onActivityResult(requestCode, resultCode, data);
          if (requestCode == imgDL) 
          {     
              Log.e("onActivity Result","");
              urlHitMethod("http://XXXXXXXXXXXXXXXXXX.com/banner_scan");
          }
          if(resultCode==RESULT_OK)
      {
    Log.e("onActivity Result","come in onactivity result ok"); 

      }
          else
          {
    Log.e("onActivity Result","come in onactivity result with error"); 

      }



      }

答案 2 :(得分:1)

如果您正在使用onActivityResult,那么在使用intent启动时不应该完成活动,否则会导致应用程序崩溃。 感谢。

答案 3 :(得分:0)

在CaptureActivity.class中,您必须设置结果,然后在第一个活动中检查onActivityResult结果代码

在CaptureActivity.class中,它应该类似于以下

 Intent in = new Intent();
    setResult(1,in);//Here I am Setting the Requestcode 1, you can put according to your requirement
    finish();