Ich habe diese Anwendung:Wie implementiert man die Schnittstelle in die Anwendungsklasse?
public class App extends Application {
private AppInterface appInterface;
@Override
public void onCreate() {
super.onCreate();
appInterface = (AppInterface) this;
}
public void something() {
appInterface.result();
}
}
diese Schnittstelle:
public interface AppInterface {
void result();
}
Und ich versuche eine Methode innerhalb App aufrufen und von der Schnittstelle Ergebnis:
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();
}
}
Aber ich bekomme diesen Fehler:
E/AndroidRuntime: FATALE AUSNAHME: Haupt Prozess: com.something, PID: 13803 java.lang.RuntimeException: kann keine Anwendung com.something.App erstellen: java.lang.ClassCastException: com.something.App kann nicht umgewandelt werden zu com.something.AppInterface bei android.app.ActivityThread.handleBindApplication (ActivityThread.java:5406) bei android.app.ActivityThread.-wrap2 (ActivityThread.java) bei android.app.ActivityThread $ H.handleMessage (ActivityThread .java: 1545) bei android.os.Handler.dispatchMessage (Handler.java:102) bei android.os.Looper.loop (Looper.java:154) bei android.app.ActivityThread.main (ActivityThread.java : 6119) bei java.lang.reflect.Method.invoke (native Methode) bei com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:886) bei com.android.internal.os.ZygoteInit.main (ZygoteInit.java:776) verursacht durch: java.lang.ClassCastException: com.msd.test.App nicht com.msd.test.AppInterface gegossen werden kann
Was mache ich falsch?
Zuerst ruft 'getApplicationContext()' 'innen ein Application' sinnlos . Benutze einfach 'this'. Zweitens enthält "App" * eine Instanz von "AppInterface". App selbst ist keine AppInterface-Instanz. – CommonsWare
Ok, ersetzen Sie getApplicationContext() durch "das" ist klar, aber wie man es beheben? Kannst du mir zeigen? – Michalsx