Почему onActivityResult не вызывается в Android?

Когда я запускаю свое приложение, я показываю заставку. Эта страница была показана в течение 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 не вызывается. Как это исправить?


person Siva K    schedule 19.07.2011    source источник
comment
Почему вы заканчиваете свою абонентскую активность?   -  person Pankaj Kumar    schedule 19.07.2011
comment
в моем следующем действии, когда пользователь нажимает кнопку «Назад», я хочу, чтобы приложение закрылось....   -  person Siva K    schedule 19.07.2011
comment
когда вы используете финиш, он никогда не появится в onActivityResult, поэтому удалите его   -  person Niranj Patel    schedule 19.07.2011
comment
Можете ли вы опубликовать больше кодов активности вызывающего абонента и несколько строк вызываемой активности, где вы это закончили?   -  person Pankaj Kumar    schedule 19.07.2011
comment
теперь я пробую это для примера, приведенный выше код - это моя активность вызывающего абонента, и в моей вызываемой активности я просто показываю макет без каких-либо кодов. только что набрал как setContentView(R.layout.image);   -  person Siva K    schedule 19.07.2011


Ответы (4)


В 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();
person Shaista Naaz    schedule 19.07.2011
comment
На самом деле ваш комментарий неверен. Вы устанавливаете не requestCode, а resultCode. И если я прав, вы можете использовать Activity.RESULT_CANCELED и Activity.RESULT_OK. - person mDroidd; 20.08.2013
comment
Моя проблема в том, что когда вы устанавливаете результат действия в RESULT_OK, onActivityResult для ожидающего действия никогда не вызывался. Когда я изменил значение результата на 1, это сработало. - person Ilker Baltaci; 17.02.2014
comment
-1. @mDroidd прав - вы не устанавливаете requestCode, вы передаете буквальное значение для resultCode, которое на самом деле соответствует RESULT_FIRST_USER, а не RESULT_OK - person kolosy; 24.04.2014

Также обратите внимание, что если ваша базовая активность (вызывающая startActivityForResult) не может использовать флаг noHitory в манифесте.

Если вы сделаете это, onActivityResult никогда не будет вызываться.

person Snicolas    schedule 27.06.2012

попробуй это

Намерение myIntent = новое намерение (деятельность.это, 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"); 

      }



      }
person Niranj Patel    schedule 19.07.2011
comment
когда вы используете финиш, он никогда не появится в onActivityResult, поэтому удалите его - person Niranj Patel; 19.07.2011

Если вы используете onActivityResult, вы не должны завершать действие при запуске с намерением, иначе это приведет к сбою приложения. Спасибо.

person javapluto    schedule 10.10.2011