我MainActitity
中的onCreate
:
BLEApplication mApp = (BLEApplication) BLEApplication.mAppContext();
mApp.MainActivity = this;
同样在MainActitity
public void EnableDisableButtons(){
findViewById(R.id.buttonNewGame).setEnabled(true);
}
类别:
public class BLEApplication extends Application {
static Activity MainActivity;
... }
public class BLE {
...
BLEApplication mApp = (BLEApplication) BLEApplication.mAppContext();
mApp.MainActivity.EnableDisableButtons();
mApp.MainActivity.findViewById(R.id.buttonContinueGame).setEnabled(true);
我可以使用MainActivity.findViewById
启用课程BLE
中的活动按钮,但对于EnableDisableButtons()
Studio说“无法解析方法”。我可以将所有代码从EnableDisableButtons
复制到BLE
,但是使用MainActivity
接缝中的方法可以为我提供更优雅的解决方案。为什么会出错?
答案 0 :(得分:1)
我无法完全理解您的代码。但是根据java概念,您需要将Activity类型化为您的活动,如下所示:
public class BLE {
...
BLEApplication mApp = (BLEApplication) BLEApplication.mAppContext();
((MainActivity)(mApp.MainActivity)).EnableDisableButtons();
mApp.MainActivity.findViewById(R.id.buttonContinueGame).setEnabled(true);
由于您的mApp.MainActivity是Activity的对象,因此您需要对其进行类型转换以告知它是哪个Activity,以便它可以找到您在活动中声明的方法。
同样,mApp.MainActivity为您提供了Activity类的对象,其中没有EnableDisableButtons()方法,因此存在此错误。 现在,如果您将其类型转换为MainActivity,它将找到该方法,并且不会出现此错误。