how to know the calling activity in android

后端 未结 7 454
余生分开走
余生分开走 2020-11-29 11:59

I have an activity which is called by few other activities. For example: I have Activity1,Activity2,Activity3. Activity1 calls Activity2 and pass parameter. Activity3 also c

7条回答
  •  臣服心动
    2020-11-29 12:26

    A. If you can use startActivityForResult

    As per Zain Ali's answer below: If you can start Activity with startActivityForResult() then you can get name of calling Activity class by this.getCallingActivity().getClassName();

    B. If you can not use startActivityForResult

    If you can not use startActivityForResult(), then you can use following method: You can pass additional parameter in intent, check the value in activity and act accordingly.

    1) Define an interface or constants class to define integer constants to indicate calling activity

    public interface ActivityConstants {
                public static final int ACTIVITY_1 = 1001;
                public static final int ACTIVITY_2 = 1002;
                public static final int ACTIVITY_3 = 1003;
    }
    

    2) Add extra parameter in intent while calling Activity2.

            Intent act2 = new Intent(context, Activity2.class);
                    act2.putExtra("calling-activity", ActivityConstants.ACTIVITY_1);
        // or ActivityConstants.ACTIVITY_3 if called form Activity3
    startActivity(act2);
    

    3) Check the value of this extra parameter in Activity2 and act accordingly..

    int callingActivity = getIntent().getIntExtra("calling-activity", 0);
    
            switch (callingActivity) {
            case ActivityConstants.ACTIVITY_1:
                // Activity2 is started from Activity1
                break;
            case ActivityConstants.ACTIVITY_3:
                // Activity2 is started from Activity3
                break;
            }
    

提交回复
热议问题