【问题标题】:How create a generic activity context?如何创建通用的活动上下文?
【发布时间】:2019-07-01 08:33:42
【问题描述】:

我有下一部分代码,我需要知道上下文传递的活动类型:

Activity activity;

        if (mContext instanceof ClientActivity) {
            activity = ((ClientActivity) mContext);
        } else if (mContext instanceof LoginActivity) {
            ((LoginActivity) mContext).onBackPressed();
        } else if (mContext instanceof OnBoardingActivity) {
            ((OnBoardingActivity) mContext).onBackPressed();
        } else if (mContext instanceof HomeActivity) {
            ((HomeActivity) mContext).onBackPressed();
        } else {
            ((Activity) mContext).onBackPressed();
        }

有没有办法让这个 Activity 活动成为通用的?如果上下文来自此活动,要将活动更改为 ClientActivity 类型?

谢谢。

【问题讨论】:

    标签: android android-activity android-context


    【解决方案1】:

    检测您以前的活动的最简单方法如下:

    像这样在 MainActivity 或 Constants.java 中创建静态变量:

    public static String passedContext="MainActivity";
    

    并在启动活动期间将该变量设置为当前活动名称,例如:

    Intent intent = new Intent(this, Next.class);
    MainActivity.passedContext = "Main";
    startActivity(intent);
    

    现在你可以像这样检查那个变量了

    if(MainActivity.passedContext.equals("Main")){
    //Do Something
    }
    

    为了使其更通用创建父 Activity 并从该父扩展所有其他活动,现在在其 onPause 中将值设置为当前类名称,如下所示

    @Override
        protected void onPause() {
            MainActivity.passedContext = this.getClass().getCanonicalName(); //Or use any other method to get activityName
            super.onPause();
        }
    

    再次,您可以在应用程序的任何位置检查该静态变量。 希望对你有帮助!

    【讨论】:

      【解决方案2】:

      是的,使用扩展 AppCompactActivity 的抽象类,而不是从所有活动中扩展它,并将此代码放在抽象类中。

      例子:

       abstract class BaseActivity extends AppCompactActivity{
       public abstract void handleBackPressed();
           }
      

      比从你所有的类扩展 BaseActivity 。当您在每个类上覆盖该方法时,请执行您需要的操作。

      但是......看看你的代码,这可以在不需要“通用活动”的情况下完成

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-07-13
        • 1970-01-01
        • 2021-12-13
        • 1970-01-01
        • 2014-06-02
        • 1970-01-01
        • 2014-01-14
        相关资源
        最近更新 更多