我的班级Activity1
扩展了AppCompatActivity
,班级Activity2
扩展了AppCompatActivity
。我想在两个活动中调用相同的方法:
method(Activity1.this) - parameter (Activity1 activity)
method(Activity2.this) - parameter (Activity2 activity)
当然,像这样的东西行不通,是否可以使用Bundle
或其他东西?我只想拥有一些通用方法,可以在其中传递不同的activities
,然后再调用它们的方法。
答案 0 :(得分:0)
如果您要查找两个独立的,不相关的类以声明相同的方法,那么您要寻找的是interface
。使用以下示例界面:
public interface MyInterface {
void method(AppCompatActivity activity);
}
您的两个活动现在都可以implement
这个界面,并通过自己作为参数传递extend AppCompatActivity
。结果,他们被迫定义此方法,例如
public Activity1 extends AppCompatActivity implements MyInterface {
@Override
public void onResume(Bundle savedInstanceState) {
super(savedInstanceState);
method(this);
}
@Override
public void method(AppCompatActivity activity) {
// Definition goes here
}
}
同样,您可以然后将另一个类中的任何一个活动引用为MyInterface
的实例,例如
// Not an actual way of declaring an Activity but just for demonstration purposes
MyInterface activity1 = new Activity1();
MyInterface activity1 = new Activity2();
由于两个类都扩展了AppCompatActivity
,因此Sagar's answer在这种情况下也可以很好地工作。但是,无论继承路径如何,该解决方案都可以使用。
编辑抱歉,我只是注意到[Kotlin]标签,问题中还没有立即弄清楚。相当于Kotlin的是:
public Activity1 : AppCompatActivity(), MyInterface {
override fun onResume(savedInstanceState: Bundle) {
super(savedInstanceState);
method(this);
}
override fun method(activity: AppCompatActivity) {
// Definition goes here
}
}
答案 1 :(得分:0)
尝试传递Activity对象引用不是一个好主意。
AppCompatActivity
),并使Activity1
和Activity2
扩展BaseActivity
BaseActivity.java
class BaseActivity : AppCompatActivity() {
...
fun commonMethod(){
...
}
}
Activity1.java
class Activity1 : BaseActivity() {
...
//use commonMethod() where ever needed.
}
Activity2.java
class Activity2 : BaseActivity() {
...
//use commonMethod() where ever needed.
}
Context
Obj作为方法参数传递。