如何创建通用 activity 上下文?
How create a generic activity context?
我有下一部分代码,我需要知道上下文是从什么类型的 activity 传递的:
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 activity 成为通用的?如果上下文来自此 activity?
,则将 activity 更改为 ClientActivity 类型
谢谢你。
是的,使用抽象 class 扩展 AppCompactActivity
,而不是从所有活动中扩展它,并将此代码放在抽象 class.
中
示例:
abstract class BaseActivity extends AppCompactActivity{
public abstract void handleBackPressed();
}
然后从所有 classes 扩展 BaseActivity。当您在每个 class 上验证该方法时,请执行您需要的操作。
但是......看看你的代码,这不需要 "generic activities"
检测您以前的 activity 的最简单方法如下:
在 MainActivity 或 Constants.java 中创建静态变量,如下所示:
public static String passedContext="MainActivity";
并在启动期间 Activity 将该变量设置为当前 activity 名称,例如:
Intent intent = new Intent(this, Next.class);
MainActivity.passedContext = "Main";
startActivity(intent);
现在您可以像这样检查变量 any-were
if(MainActivity.passedContext.equals("Main")){
//Do Something
}
为了让它更通用创建父级 Activity 并从该父级扩展所有其他父级,现在将其 onPause 设置值设置为当前 class 名称这样
@Override
protected void onPause() {
MainActivity.passedContext = this.getClass().getCanonicalName(); //Or use any other method to get activityName
super.onPause();
}
同样,您可以在应用程序的任何位置检查该静态变量。
希望对您有所帮助!
我有下一部分代码,我需要知道上下文是从什么类型的 activity 传递的:
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 activity 成为通用的?如果上下文来自此 activity?
,则将 activity 更改为 ClientActivity 类型谢谢你。
是的,使用抽象 class 扩展 AppCompactActivity
,而不是从所有活动中扩展它,并将此代码放在抽象 class.
示例:
abstract class BaseActivity extends AppCompactActivity{
public abstract void handleBackPressed();
}
然后从所有 classes 扩展 BaseActivity。当您在每个 class 上验证该方法时,请执行您需要的操作。
但是......看看你的代码,这不需要 "generic activities"
检测您以前的 activity 的最简单方法如下:
在 MainActivity 或 Constants.java 中创建静态变量,如下所示:
public static String passedContext="MainActivity";
并在启动期间 Activity 将该变量设置为当前 activity 名称,例如:
Intent intent = new Intent(this, Next.class);
MainActivity.passedContext = "Main";
startActivity(intent);
现在您可以像这样检查变量 any-were
if(MainActivity.passedContext.equals("Main")){
//Do Something
}
为了让它更通用创建父级 Activity 并从该父级扩展所有其他父级,现在将其 onPause 设置值设置为当前 class 名称这样
@Override
protected void onPause() {
MainActivity.passedContext = this.getClass().getCanonicalName(); //Or use any other method to get activityName
super.onPause();
}
同样,您可以在应用程序的任何位置检查该静态变量。 希望对您有所帮助!