Используйте startActivityForResult(intent, positiveinteger);
Делайте то, что вы хотите сделать, в начальном действии, когда вы думаете, что действие успешно завершилось, выполните setResult(Activity.RESULT_OK);
finish();
И в задании, котороеначал переопределять метод onActivityResult()
.И проверьте, закончила ли ваша вызванная деятельность свою работу.
Никогда и никогда не используйте Activity.RESULT_OK
для requestCode
, потому что это отрицательная постоянная.И в Документах говорится, что метод onActivityResult()
будет вызываться для каждого положительного целого числа requestCode
:
Перепишите и следуйте этому
Как запустить действие для результата:
static final int STATIC_RESULT=2; //positive > 0 integer.
Intent i = new Intent("my.activity.startNewOne");
i.putExtra("category", category);
startActivityForResult(i, STATIC_RESULT);
В вашей startNewOne
деятельности вы заканчиваете с результатом как:
//after the job is done, use the method i mentioned in the comments to check if the sms is delivered/submitted. and proceed if true with this
if(smsObject.getStatus()==0)//by the docs means successfuly sent
{
Intent i = getIntent(); //get the intent that has been called, i.e you did called with startActivityForResult();
i.putExtras(b);//put some data, in a bundle
setResult(Activity.RESULT_OK, i); //now you can use Activity.RESULT_OK, its irrelevant whats the resultCode
finish(); //finish the startNewOne activity
}
Как вы используете onActivityResult()
метод:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == STATIC_RESULT) //check if the request code is the one you've sent
{
if (resultCode == Activity.RESULT_OK)
{
// this is successful mission, do with it.
{
} else
// the result code is different from the one you've finished with, do something else.
}
}
super.onActivityResult(requestCode, resultCode, data);
}