8

matias'sコメントを反映して編集

実は、もともと私はコードにsupportRequestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);orがなかったことに気付くまで、requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);runtime exception when below combinations of actions happened

ユーザーがホームボタンを押してアプリケーションを最小化し、最近のアプリから再開しようとしました(ホームボタンを長押しします) 。

画面の回転が発生した場合 (注: マニフェストにはconfigChange宣言がありません )

次に、初期化中に不確定な進行状況バーを表示することが問題の原因であると考えたので、メソッドを呼び出してみただけでrequest*、それが解消されると考えましたが、何も起こりませんでした..

showPdIndeterminate();最後に、テストのために削除しました。したがって、コードのどこにも表示していません。上記の状況でも同じことが起こります


私はフラグメントベースを持っていActionBarActivityます.私のレイアウトは2つのフラグメントを保持するために内側DrawerLayoutにラップされています.two framelayouts

私はsuper.onCreateにコンテンツエラーを追加する前にrequestFeature()を呼び出す必要がありますが、それでも同じ例外を試しました

@Override
protected void onCreate(Bundle savedInstanceState) {
    Log.e(TAG, "Inside OnCreate");
    // supportRequestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
    requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    showPdIndeterminate();
           ....
}

そしてshowPdIndeterminate()_

private void showPdIndeterminate() {
    pd = ProgressDialog.show(this, "Initializing", "Pls wait...");
    pd.setIndeterminate(true);
    pd.show();
}

NullPointerException試してみると得supportRequestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);られるので、コメントしただけです。

エラーログは次のとおりです。

06-16 04:04:57.280: D/AndroidRuntime(27280): Shutting down VM
06-16 04:04:57.280: W/dalvikvm(27280): threadid=1: thread exiting with uncaught exception (group=0x413592a0)
06-16 04:04:57.285: E/AndroidRuntime(27280): FATAL EXCEPTION: main
06-16 04:04:57.285: E/AndroidRuntime(27280): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.demo/com.example.demo.MainActivity}: android.util.AndroidRuntimeException: requestFeature() must be called before adding content
06-16 04:04:57.285: E/AndroidRuntime(27280):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2100)
06-16 04:04:57.285: E/AndroidRuntime(27280):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2125)
06-16 04:04:57.285: E/AndroidRuntime(27280):    at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3553)
06-16 04:04:57.285: E/AndroidRuntime(27280):    at android.app.ActivityThread.access$700(ActivityThread.java:140)
06-16 04:04:57.285: E/AndroidRuntime(27280):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1233)
06-16 04:04:57.285: E/AndroidRuntime(27280):    at android.os.Handler.dispatchMessage(Handler.java:99)
06-16 04:04:57.285: E/AndroidRuntime(27280):    at android.os.Looper.loop(Looper.java:137)
06-16 04:04:57.285: E/AndroidRuntime(27280):    at android.app.ActivityThread.main(ActivityThread.java:4898)
06-16 04:04:57.285: E/AndroidRuntime(27280):    at java.lang.reflect.Method.invokeNative(Native Method)
06-16 04:04:57.285: E/AndroidRuntime(27280):    at java.lang.reflect.Method.invoke(Method.java:511)
06-16 04:04:57.285: E/AndroidRuntime(27280):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)
06-16 04:04:57.285: E/AndroidRuntime(27280):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
06-16 04:04:57.285: E/AndroidRuntime(27280):    at dalvik.system.NativeStart.main(Native Method)
06-16 04:04:57.285: E/AndroidRuntime(27280): Caused by: android.util.AndroidRuntimeException: requestFeature() must be called before adding content
06-16 04:04:57.285: E/AndroidRuntime(27280):    at com.android.internal.policy.impl.PhoneWindow.requestFeature(PhoneWindow.java:267)
06-16 04:04:57.285: E/AndroidRuntime(27280):    at android.app.Activity.requestWindowFeature(Activity.java:3320)
06-16 04:04:57.285: E/AndroidRuntime(27280):    at android.support.v7.app.ActionBarActivityDelegateICS.onCreate(ActionBarActivityDelegateICS.java:63)
06-16 04:04:57.285: E/AndroidRuntime(27280):    at android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.java:98)
06-16 04:04:57.285: E/AndroidRuntime(27280):    at com.example.demo.MainActivity.onCreate(MainActivity.java:464)
06-16 04:04:57.285: E/AndroidRuntime(27280):    at android.app.Activity.performCreate(Activity.java:5206)
06-16 04:04:57.285: E/AndroidRuntime(27280):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1083)
06-16 04:04:57.285: E/AndroidRuntime(27280):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2064)
06-16 04:04:57.285: E/AndroidRuntime(27280):    ... 12 more

注:方向の変更時と、ホームボタンを押して最近のアプリケーションリストから起動したときに、この例外が発生します

setRetainInstance(true); この例外は、フラグメントのonActivityCreated() oronCreate()にある (ない) に関係なく、**最終的に**発生 します。

なぜこうなった?それを解決する方法は?

4

3 に答える 3

0

requestWindowFeature()の前後にsetcontentView()呼び出してみてくださいonCreate()

私のために働きます。

于 2014-07-15T12:54:06.693 に答える
0

android.support.v7.app.ActionBarActivity、 を追加してウィンドウの内容を変更しますActionBar。さらに、FEATURE_INDETERMINATE_PROGRESSアクションバーが存在するかどうかによって異なります。

次のようなことを試してください:

@Override
protected void onCreate(Bundle savedInstanceState) {
   ABD = ActionBarActivityDelegate.createDelegate(this);
   super.onCreate(savedInstanceState);
   ABD.onCreate(savedInstanceState);
}

ActionBarActivityDelegateクラスはここにあります

最後に、可能であれば、画面の向きをロックすることを検討してください。これについては、こちらで詳しく説明しています。

于 2014-07-09T04:59:50.613 に答える