使用应用程序对象的android“无法解析方法”错误

时间:2016-02-12 16:00:27

标签: java android class android-activity

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接缝中的方法可以为我提供更优雅的解决方案。为什么会出错?

1 个答案:

答案 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,它将找到该方法,并且不会出现此错误。