我有這樣的應用:如何在應用程序類中實現接口?
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:致命例外:主 進程:com.something,PID:13803 java.lang.RuntimeException:無法創建應用程序com.something.App:java.lang.ClassCastException:com.something.App無法投射到com.omething.AppInterface at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5406) at android.app.ActivityThread.-wrap2(ActivityThread.java) at android.app.ActivityThread $ H.handleMessage(ActivityThread .java:1545) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java :6119) at java.lang.reflect.Method.invoke(Native Method) 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
好吧,用「this」替換getApplicationContext()是明確的,但是如何解決?能給我看看麼? – Michalsx