Взаимодействие между действиями - PullRequest
0 голосов
/ 13 февраля 2012

Я запускаю упражнение из основного с помощью Intent:

Intent i = new Intent(getApplicationContext(), InfoChiamata.class);
i.putExtra("codice_cliente", codice_cliente[tv_clicked_id]);
i.putExtra("descrizione_chiamata", descrizione_chiamata[tv_clicked_id]);
startActivity(i);

Как я могу редактировать основной интерфейс действия из действия, запущенного с Intent?Как я могу узнать, когда я вернусь из второго занятия в основное?Я попытался переопределить методы onResume и onStart, но приложение даже не запускается.Я попытался переопределить метод onRestart, когда он вызвал сбой приложения.

@Override
protected void onRestart() { 
    if(call_back == 1)
        Toast.makeText(getApplicationContext(), "asd", Toast.LENGTH_LONG).show();
}

переменная call_back установлена ​​в 1 из вторичного действия, когда он запускается.

Спасибо, Mattia

Ответы [ 3 ]

8 голосов
/ 13 февраля 2012

вместо этого попробуйте startActivityForResult, который даст вам обратный вызов вашей первой активности.также не используйте контекст приложения, если в этом нет крайней необходимости, вместо этого используйте контекст действия.Также, когда вы вызываете определенные методы из класса активности и переопределяете их, например, onRestart или onStop или onResume, вы должны сначала выполнить super.onResume () внутри метода, убедившись, что жизненный цикл приложения не нарушен.

2 голосов
/ 13 февраля 2012

Попробуйте начать новое действие с

startActivityForResult(i, 1);

Затем в своем основном упражнении используйте этот код, чтобы поймать, когда пользователь покидает второе действие и возвращается к первому:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    //your request code will be 1 since you started the 
    //activity with result 1. Your result code will be detemined 
    //by if the activity ended properly. 

}
1 голос
/ 13 февраля 2012

Похоже, что вы хотите использовать startActivityForResult (Context, Intent) для вызова вашего второго действия. Когда вы делаете это, ваше второе действие может возвращать значение тому, которое вызвало его, и вы можете решить, что делать дальше. Когда второе действие закончено, ваше первое действие получит обратный вызов. Это говорит вашему первому заданию, что второе завершено, и ему передается результат того, что произошло во втором задании.

Это объясняется в документации по Android здесь: http://developer.android.com/reference/android/app/Activity.html#startActivityForResult(android.content.Intent,%20int)

...