【发布时间】:2016-11-13 06:18:07
【问题描述】:
我正在开发一个 SMS 应用程序,我的 MainActivity 中有一个方法可以执行按钮单击:
public void updateMessage() {
ViewMessages.performClick();
}
当我从MainActivity 类内部调用此方法时,此方法工作正常并执行按钮单击。
但是,当我从如下所示的任何其他类调用此方法时,我从 IntentServiceHandler 类调用 Main Activity 的 updateMessage 方法,我得到一个 NullPointerException:
java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“boolean android.widget.Button.performClick()”
public class IntentServiceHandler extends IntentService {
public IntentServiceHandler() {
super("IntentServiceHandler");
}
@Override
protected void onHandleIntent(Intent intent) {
String message = intent.getStringExtra("message");
TransactionDataBase transactionDB = new TransactionDataBase(this, 1);
transactionDB.addMessage(message);
MainActivity mainActivity = new MainActivity();
mainActivity.updateMessage();
}
}
我该如何处理?
编辑:我什至尝试将 updateMessage 方法设为静态,但现在出现以下异常
android.view.ViewRootImpl$CalledFromWrongThreadException:只有创建视图层次结构的原始线程才能接触其视图。
【问题讨论】:
-
永远不要
new活动。这是你的第一个问题。您的 Activity 可能需要绑定到该服务并处理消息 -
更新问题。我把它变成了静态的,现在我得到了一个不同的例外
-
static不是正确的解决方案。这只是一个糟糕的解决方法。
标签: java android nullpointerexception