3

私はアンドロイド 2.2 froyo アプリケーションに取り組んでいます。アプリのアンドロイド2.2、3.0を実行しているとき、その時間は完璧に実行されます。しかし、Android 4.0以降で実行すると、エラーが発生します。残念ながら、アプリが停止しました。エラーを解決する方法を教えてください。

08-03 16:19:36.602: E/AndroidRuntime(581): FATAL EXCEPTION: main
08-03 16:19:36.602: E/AndroidRuntime(581): java.lang.IllegalArgumentException: Window type can not be changed after the window is added.
08-03 16:19:36.602: E/AndroidRuntime(581):  at android.os.Parcel.readException(Parcel.java:1331)
08-03 16:19:36.602: E/AndroidRuntime(581):  at android.os.Parcel.readException(Parcel.java:1281)
08-03 16:19:36.602: E/AndroidRuntime(581):  at android.view.IWindowSession$Stub$Proxy.relayout(IWindowSession.java:634)
08-03 16:19:36.602: E/AndroidRuntime(581):  at android.view.ViewRootImpl.relayoutWindow(ViewRootImpl.java:3586)
08-03 16:19:36.602: E/AndroidRuntime(581):  at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1185)
08-03 16:19:36.602: E/AndroidRuntime(581):  at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442)
08-03 16:19:36.602: E/AndroidRuntime(581):  at android.os.Handler.dispatchMessage(Handler.java:99)
08-03 16:19:36.602: E/AndroidRuntime(581):  at android.os.Looper.loop(Looper.java:137)
08-03 16:19:36.602: E/AndroidRuntime(581):  at android.app.ActivityThread.main(ActivityThread.java:4424)
08-03 16:19:36.602: E/AndroidRuntime(581):  at java.lang.reflect.Method.invokeNative(Native Method)
08-03 16:19:36.602: E/AndroidRuntime(581):  at java.lang.reflect.Method.invoke(Method.java:511)
08-03 16:19:36.602: E/AndroidRuntime(581):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
08-03 16:19:36.602: E/AndroidRuntime(581):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
08-03 16:19:36.602: E/AndroidRuntime(581):  at dalvik.system.NativeStart.main(Native Method)

Logcat
エラーは次のようなものです: 残念ながらアプリは停止しました

4

3 に答える 3

6

あなたの活動/活動にこのコードがあるかどうかを確認してください

  @Override
    public void onAttachedToWindow()
    {  
        this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
        super.onAttachedToWindow();  
    }

これは、以前のバージョンの Android のセキュリティ ホールであり、ユーザーをアプリにロックしてホーム ボタンを使用できないようにするために使用できました。これは Android 4 以降で修正されており、これを使用するとエラーが表示されます。

于 2012-10-30T10:05:03.900 に答える
1

サンプル コードがなければ、問題の原因を特定するのは非常に困難です。ただし、バージョン管理について言及したので...

1: AndroidManifest.xml ファイルで、最小 SDK がレベル 8 (Froyo) に設定され、ターゲットが 15 (ICS) に設定されているか、さらには 16 (Jelly Bean) に設定されていることを確認します。このようなもの:

<manifest ...>
...
<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="15" />

<application>
...
</application>
</manifest>

2: Eclipse を使用している場合は、プロジェクトを右クリック --> [プロパティ] --> [Android] --> [プロジェクトのビルド ターゲット] をクリックします。どの API レベルがチェックされますか? 理想的には、これは Android の最新バージョンである Jelly Bean である必要がありますが、この場合は Android 4.0.3 で十分です。その API レベルの SDK がシステムにインストールされていない場合、それに対してコンパイルできるかどうかはわかりません。ターゲットとする API レベルがインストールされていることを確認してください。

于 2012-08-03T12:56:18.983 に答える
0

上でコメントできたかもしれませんが、十分な評判がありません。

おそらく、あなたのアプリケーションは API レベル 15 と互換性がありません。少し前にタイトル バーをカスタマイズしようとしたときに、そのようなことをしました。Google による新しいフレームワークでの絶え間ない改善と拡張により、API レベルを簡単に破ることができます。問題の解決策は、Android 開発者の Web サイトで入手できる互換パックを追加することです。しかし、問題に対する互換性パックがあるかどうかを示すために、実際に何が問題なのかを知る必要もありました。コードを投稿してください。効率的にお手伝いできるかもしれません。

于 2012-08-03T11:29:28.753 に答える