У меня есть это приложение:Как реализовать интерфейс в классе приложения?
public class App extends Application {
private AppInterface appInterface;
@Override
public void onCreate() {
super.onCreate();
appInterface = (AppInterface) this;
}
public void something() {
appInterface.result();
}
}
Используя этот интерфейс:
public interface AppInterface {
void result();
}
И я пытаюсь вызвать некоторый метод внутри приложения и получить результат от интерфейса:
public class MainActivity extends AppCompatActivity implements AppInterface {
@Override
public void result() {
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final App app = (App) getApplication();
app.something();
}
}
Но я я получаю эту ошибку:
E/AndroidRuntime: FATAL EXCEPTION: main Процесс: com.something, PID: 13803 java.lang.RuntimeException: невозможно создать приложение com.something.App: java.lang.ClassCastException: com.something.App не может быть запущен to com.something.AppInterface на android.app.ActivityThread.handleBindApplication (ActivityThread.java:5406) на android.app.ActivityThread.-wrap2 (ActivityThread.java) на android.app.ActivityThread $ H.handleMessage (ActivityThread .java: 1545) на android.os.Handler.dispatchMessage (Handler.java:102) на android.os.Looper.loop (Looper.java:154) на android.app.ActivityThread.main (ActivityThread.java : 6119) at java.lang.reflect.Method.invoke (собственный метод) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:886) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:776) Вызванный: java.lang.ClassCastException: com.msd.test.App не может быть приведен к com.msd.test.AppInterface
Что я делаю неправильно?
Во-первых, вызов 'getApplicationContext()' 'внутри Application' бессмысленно , Просто используйте 'this'. Во-вторых, 'App' * содержит * экземпляр' AppInterface'. 'App' сам по себе не является экземпляром' AppInterface'. – CommonsWare
Хорошо, замените getApplicationContext() на «это», ясно, но как его исправить? Можешь ли ты показать мне? – Michalsx