Активность Android Refresh при возврате на него

Мне нужна небольшая помощь в освещении одного из моих действий в моем приложении. Я использую активность вкладки и подключение к веб-сервису и загрузку некоторых данных из одной из моих дочерних действий. Когда я нажимаю кнопку синхронизации в своем дочернем действии, я запускаю новое действие, которое не находится в узле табуляции, и когда синхронизация завершена, он возвращает ему родительский (дочерняя активность). То, что я хочу достичь, - это обновить активность, когда я вернусь к ней. Когда я проверил через Интернет, я обнаружил, что лучший способ сделать это - использовать startActivityForResult, но я действительно не понимаю, как его использовать и как обновлять активность, когда я получаю результат от законченной деятельности.

Если кто-нибудь может мне помочь, я буду очень рад. Спасибо!

EDIT:

Я использую этот код, и он даже не показывает журнал onActivityResult

MyCollectionId.class:

Intent intent = new Intent(MyCollectionId.this, Synchronization.class);
intent.putExtra("process", 2);
startActivityForResult(intent, 1);

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
 super.onActivityResult(requestCode, resultCode, data);
 if(resultCode==RESULT_OK){
     Log.e("","OnActivityResult");
    Intent refresh = new Intent(this, MyCollectionId.class);
    startActivity(refresh);
    this.finish();
 }
}

Synchronization.class:

Intent intent = new Intent();
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
setResult(RESULT_OK,intent);
finish();

Ответ 1

Еще один сложный способ сделать это - просто начать свою деятельность на onRestart()

@Override
public void onRestart(){
    super.onRestart();
    Intent previewMessage = new Intent(StampiiStore.this, StampiiStore.class);
    TabGroupActivity parentActivity = (TabGroupActivity)getParent();
    parentActivity.startChildActivity("StampiiStore", previewMessage);
    this.finish();
}

Это должно сделать трюк на самом деле. (В этом коде я показываю, как это делается, когда вы используете настраиваемый менеджер TabActivity.)

Ответ 2

При нажатии кнопки:

Intent intent = new Intent(this, SyncActivity.class);
        //intent.putExtra("someData", "Here is some data");
        startActivityForResult(intent, 1);

Затем в том же классе Activity:

   @Override
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
      super.onActivityResult(requestCode, resultCode, data);
      if(resultCode==RESULT_OK){
         Intent refresh = new Intent(this, InitialActivity.class);
         startActivity(refresh);
         this.finish();
      }
     }

Активность синхронизации будет иметь:

setResult(RESULT_OK, null);
finish();

Ответ 3

Вы должны обработать результат действия, который вы начали с "startActivityForResult" в родительской активности в методе:

@override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
   //...
}

И в зависимости от результата вы можете просто снова вызвать код, который отвечает за отображение информации в родительской активности (может быть, вы помещаете ее в метод onResume() или тому подобное).

Я бы предложил вам переместить всю логику, ответственную за передачу информации, на отдельный метод. И вызывать его после получения результата. Вместо перезапуска родительской активности.

Ответ 4

Если вы начнете свое второе действие с помощью метода startActivityForResult, когда вы вернетесь к первому действию, будет вызван onActivityResult первого действия.

Если вы переопределите его, вы можете обновить свою активность оттуда.

Подробнее здесь и здесь

Ответ 5

Вызвать дочернюю активность, используя startActivityForResult с кодом запроса, SetResult из дочерней активности. И когда дочерняя активность завершена, вы можете обновить родительскую активность в методе onActivityResult.

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);

      //Check the result and request code here and update ur activity class

    }

Вот пример http://rahulonblog.blogspot.com/2010/05/android-startactivityforresult-example.html