[英]How can you call a method of an activity from another activity?
这是我的第一个活动
public class FirstActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_first);
}
public void addNumbers() {
////
}
}
public class SecondActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
}
// I need to call addNumbers() from here
}
我试过像这样在 SecondActivity 中实例化 FirstActivity 但我得到一个错误。 而且我还听说实例化整个活动不是最佳实践。
FirstActivity firstActivity = new FirstActivity();
firstActivity.addNumbers();
不是在第二个活动中调用方法,而是创建一个单独的公共类,例如 Functions.java 将 Functions.java 实现为
public class Functions{
public void addNumbers() {
////
}
}
现在在您要调用该方法的第二个活动中
public class SecondActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
// Calling addNumbers() from here
new Functions().addNumbers();
}
}
最好将数学运算放在存储库中,如有必要,每次都通过调用其实例来查找该存储库的实例。 您可以使用这些代码。
首先制作这个存储库
public class CalculatorRepository {
private static CalculatorRepository calculatorRepository = null;
private CalculatorRepository() {
}
public static CalculatorRepository getInstance() {
if (calculatorRepository == null) {
synchronized (CalculatorRepository.class) {
if (calculatorRepository == null) {
calculatorRepository = new CalculatorRepository();
}
}
}
return calculatorRepository;
}
public int AddFunction(int number1, int number2) {
try { // for better handler (Optional)
return number1 + number2;
} catch (Exception e) {
return 0;
}
}
// another function
// .
// .
// .
}
二次调用方法
现在你可以通过调用这个类轻松使用内部的其他方法
int result= CalculatorRepository.getInstance().AddFunction(nmuber1,nmunber2);
将 static 关键字添加到您的共享方法中
public static void addNumbers()
然后使用:
FirstActivity.addNumbers();
有关更多详细信息,请查看此答案
((MainActivity) context).getMethodName();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.