繁体   English   中英

如何从另一个活动调用一个活动的方法?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM