0
10 초 후에 뷰를 액티비티 위에 추가하고 제거하는 다음 코드를 작성했습니다.윈도우 세션 크래시
public class MyActivity extends MainActivity {
@Override
protected void onCreate(Bundle arg0) {
super.onCreate(arg0);
final ImageView view = new ImageView(this);
view.setBackgroundColor(Color.WHITE);
getWindowManager()
.addView(
view,
new WindowManager.LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT));
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
view.setVisibility(View.GONE);
getWindowManager().removeView(view);
}
}, 10000);
}
}
그러나 두 가지 여기서 발생합니다 첫째, 이미지 뷰는 모든 위에, 심지어 디스플레이에 그것을 보지 않았다 없습니다. 둘째 10 초 발생하는 다음과 같은 오류 및
Window Session Crash
java.lang.NullPointerException
at com.android.server.wm.WindowManagerService.relayoutWindow(WindowManagerService.java:2784)
at com.android.server.wm.Session.relayout(Session.java:157)
at android.view.IWindowSession$Stub.onTransact(IWindowSession.java:154)
at com.android.server.wm.Session.onTransact(Session.java:111)
at android.os.Binder.execTransact(Binder.java:320)
at dalvik.system.NativeStart.run(Native Method)
FATAL EXCEPTION: main
java.lang.NullPointerException
at android.os.Parcel.readException(Parcel.java:1327)
at android.os.Parcel.readException(Parcel.java:1275)
at android.view.IWindowSession$Stub$Proxy.relayout(IWindowSession.java:616)
at android.view.ViewRoot.relayoutWindow(ViewRoot.java:3104)
at android.view.ViewRoot.performTraversals(ViewRoot.java:1030)
at android.view.ViewRoot.handleMessage(ViewRoot.java:2020)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:132)
at android.app.ActivityThread.main(ActivityThread.java:4028)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:491)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:844)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)
at dalvik.system.NativeStart.main(Native Method)
레이아웃에 대한 참조가 없습니다. –
활동에 xml 연관이 없습니까? 그렇지 않은 경우 다음을 바꿀 수 있습니다 : 'setContentView (R.layout.main); final LinearLayout linearLayout = (LinearLayout) findViewById (R.id.id_mainlinearlayout); ' 다음에 의해 : 'final LinearLayout linearLayout = new LinearLayout (this); \t \t linearLayout.setLayoutParams (새 WindowManager.LayoutParams ( \t \t \t \t LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); \t \t setContentView (linearLayout); ' – grattmandu03
ContentView는 수퍼 클래스에 설정됩니다. –