使用的Android应用程序对象 “无法解析法” 的错误
我MainActitity
凡在onCreate
:使用的Android应用程序对象 “无法解析法” 的错误
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()
工作室活动按钮说:“不能解析的方法”。我可以将所有代码从EnableDisableButtons
复制到BLE
,但使用方法MainActivity
接缝给我更优雅的解决方案。为什么会出现错误?
我不能完全理解你的代码。但是按照java的概念,你需要强制转换活动你的活动是这样的:
public class BLE {
...
BLEApplication mApp = (BLEApplication) BLEApplication.mAppContext();
((MainActivity)(mApp.MainActivity)).EnableDisableButtons();
mApp.MainActivity.findViewById(R.id.buttonContinueGame).setEnabled(true);
由于您的mApp.MainActivity是活动的对象,所以你需要强制转换它告诉它是一个活动,所以它可以找到您在活动中声明的方法。
此外mApp.MainActivity给你Activity类的对象在其中没有EnableDisableButtons()方法,因此该误差是存在的。 现在,如果您将它转换为MainActivity,它会发现该方法,并且不会出现此错误。
它有帮助!而不是'BLEApplication'中的'静态MainActivity MainActivity;'。非常感谢!不完全理解为什么'findviewbyid'适用于更广泛的'Activity'对象。 –
我现在明白了 - R.id.buttonContinueGame是独一无二的,由Damanpreet Singh写的 - 活动不是。 –
没有原因是在onCreate中完成setcontentView。 findViewbyid是Activity.java的方法。当您在MainActivity中执行setcontentView时,因为它从Activity.java继承,因此会调用Activity.java的setContentView,并设置该窗口的视图。 现在,如果你这样做findViewById那也是Activity.java的方法,它会找到你的setContentView设置视图,并会给你的ID的视图。 这就是为什么你不能在你的xml中拥有两个相同id的视图的原因。而你可以在两个不同的xml中拥有相同的视图id。 –
EnableDisableButtons也不是一成不变的方法,你不能与类名 –
什么是你的事件试图做访问呢?请阅读一些android教程,并重新开始。 – iZBasit