【问题标题】:Calling method from MainActivity class to another class by creating instance android通过创建实例android从MainActivity类调用另一个类的方法
【发布时间】:2018-02-27 00:18:45
【问题描述】:

我正在寻找一个很好的例子,我如何从同一个包中的另一个类调用 MainAcitivity 中声明的方法。

我在 MainAcitivity 类中有一个 getSMS 方法,如下所示:

    private void sendSMS(String phoneNumber, String message) {
            SmsManager sms = SmsManager.getDefault();
            sms.sendTextMessage(phoneNumber, null, message, null, null);
        }
public void getSMS(){
            sendSMS("5556", "You're at home.");
    }

我正在 MainActivity 类的另一个类中调用 getSMS() 方法。

public void tSMS(){
    MainActivity mainActivity = new MainActivity();
    mainActivity.getSMS();
}

现在我正在使用条件语句调用其他类中的方法。

            if (activity.getType() == 3) {
            tSMS();
                }

Logcat:

java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources android.content.Context.getResources()' on a null object reference

【问题讨论】:

  • Activity 不应该手动实例化。如果您在要调用的 Activity 中有代码并且该 Activity 未打开,则它可能属于辅助类。
  • 如果此方法与您的应用程序的 UI 无关。为什么不将它放在实用程序类中?
  • 你的意思是,我可以从任何其他类调用但不能从 Activity 调用? stackoverflow.com/questions/10787159/…

标签: java android methods nullpointerexception


【解决方案1】:

getSms() 和 sendSms() 不应在您的活动中定义。查看一些有关构建代码的信息:https://medium.com/@dmilicic/a-detailed-guide-on-developing-android-apps-using-the-clean-architecture-pattern-d38d71e94029

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-03
    • 1970-01-01
    • 2015-06-10
    • 2011-12-30
    • 1970-01-01
    • 2011-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多