在Android中将Activity对象传递给非Activity类,可以通过以下几种方式实现:
// 定义接口
public interface ActivityCallback {
void onActivityMethod();
}
// 在Activity中实现接口
public class MainActivity extends AppCompatActivity implements ActivityCallback {
private NonActivityClass nonActivityClass;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
nonActivityClass = new NonActivityClass();
nonActivityClass.setActivityCallback(this);
}
@Override
public void onActivityMethod() {
// 在非Activity类中调用Activity的方法
}
}
// 非Activity类中使用接口回调
public class NonActivityClass {
private ActivityCallback activityCallback;
public void setActivityCallback(ActivityCallback callback) {
this.activityCallback = callback;
}
public void someMethod() {
if (activityCallback != null) {
activityCallback.onActivityMethod();
}
}
}
public class NonActivityClass {
private Activity activity;
public NonActivityClass(Activity activity) {
this.activity = activity;
}
public void someMethod() {
// 使用Activity对象
}
}
// 在Activity中实例化非Activity类并传递Activity对象
public class MainActivity extends AppCompatActivity {
private NonActivityClass nonActivityClass;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
nonActivityClass = new NonActivityClass(this);
nonActivityClass.someMethod();
}
}
public class NonActivityClass {
private static Activity activity;
public static void setActivity(Activity activity) {
NonActivityClass.activity = activity;
}
public static void someMethod() {
// 使用Activity对象
}
}
// 在Activity中将当前Activity对象赋值给静态变量
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
NonActivityClass.setActivity(this);
NonActivityClass.someMethod();
}
}
这些方法可以根据具体的需求选择适合的方式来传递Activity对象给非Activity类。
领取专属 10元无门槛券
手把手带您无忧上云