开发者

How to close all child activities from parent in android

I'm new to android. Actually one handler is running in Home Activity A for every 30 sec to check the net connection.

If I'm went to activity C by A->B->C, If there in no net connection at that time, then i want to close Activity B and C, then want to show message box in Activity A.

But My problem is My handler is running for every 30 sec in Home Activity A. But If i was in Activity C or some other Activity how to find which activity is my Application currently focussed now. Then i want to finish those child activities and want to show Home Activity A I have some 9 child activities in Activity B.

I heard about using "FLAG_ACTIVITY_CLEAR_TOP" . I used the code as follows in the handler in Home activity A itself. But got error.

        Intent intent = new Intent( ctx, Homepage.class );    
        intent.setFlags开发者_如何学编程(Intent.FLAG_ACTIVITY_SINGLE_TOP | 
             Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    ctx.startActivity( intent );

Here Homepage.class is my Home Activity A and i set that activity in manifest file as

    android:launchMode="singleTop"    

Please help!


You can start Activity A and close all other activities. You have to create new intent and add flag FLAG_ACTIVITY_CLEAR_TOP


Intent activityA = new Intent(context, ActivityA.class);
activityA.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
context.StartActivity(activityA);

this will close all activities that are in the stack and are at the top of activity A


When calling Acitivity C, call finish in activity B , when calling Activity A from C , call finish() in activity C !


You can use, According to me two ways,

If you start an activity using startActivityForResult, then you can call finish() in this new Activity when you're done with it and it will return control to the activity that started it.

OR otherwise, May be I am wrong,

Call finish inside onStop 'override method'.


make a uniform resultCode for closing child activities. Eg. you make 911 (should be int) as your resultCode. If you want your Activity to finish and go back directly to parent Activity, you set the resultCode to 911:

setResult(911); finish();

In every child activity, you override the onActivityResult and check if the resultCode is 911. If yes, then call the setResult(911); finish(); until you get back to your parent activity. Hope this helps!


For example, if you want to start intentB, you can do following in old activity:

Intent intentB = new Intent();
intentB.setClass(XYZ.this, abc.class);
intentB.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intentB);

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜