0

私のアプリケーションでは、カスタマイズされたウィンドウ タイトルを使用しています。バックプレスで、同じアクティビティの oncreate メソッドを呼び出しています。次の例外が発生しています。同じアクティビティの oncreate メソッドを onbackpressed-

 android.util.AndroidRuntimeException: requestFeature() must be called before adding content

コードは-

     private Bundle mBundle;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    mBundle=savedInstanceState;

    requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
            getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.window_title);  
               .
               .
               .
 }

  @Override
public void onBackPressed() {
    // TODO Auto-generated method stub
    //super.onBackPressed();
    if(backFlag){
        onCreate(mBundle);
        backFlag=false;
    }else{
        finish();
    }
}

回答- 問題の解決策が見つかりました。バックプレスで同じアクティビティを再度呼び出しています

 @Override
public void onBackPressed() {
    // TODO Auto-generated method stub
    //super.onBackPressed();
    if(backFlag){

        backFlag=false;
        Intent i=new Intent(this,MainActivity.class);
        startActivity(i);
        finish();
    }else{
        finish();
    }
}
4

4 に答える 4

1

onCreate() を変更します

protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
       mBundle=savedInstanceState;

      requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);

            getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.window_title);  
               .
               .
               .
 }
于 2013-10-25T06:10:15.300 に答える
1

コンテンツを追加する前に requestFeature() を呼び出す必要があります

=>例外自体は、コンテンツを追加する前に呼び出さないことを示唆していますrequestFeature()(つまりsetContentView()

さて、問題はこの時点です:

setContentView(R.layout.activity_main);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.window_title); 

解決:

getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.window_title);  
setContentView(R.layout.activity_main);

アップデート:

もう 1 つ、なぜonCreate()再度電話をかける必要があるのonBackKeyPressed()ですか?

于 2013-10-25T06:04:07.650 に答える
1

この行を
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.window_title);
上に移動
setContentView(....);

于 2013-10-25T06:04:41.190 に答える