2011-01-27 3 views
7
import android.content.pm.ActivityInfo; 
import android.os.Bundle; 
import android.preference.ListPreference; 
import android.preference.Preference; 
import android.preference.PreferenceActivity; 
import android.util.Log; 
import android.view.Window; 
import android.view.WindowManager; 

public class OptionsActivity extends PreferenceActivity { 
private ListPreference mListPreference; 

@Override 
protected void onCreate (Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 
       getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); 

    addPreferencesFromResource(R.xml.options); 
    mListPreference = (ListPreference) findPreference("listpreference"); 
    mListPreference.setPersistent(false); 

} 
} 

Exception Stacktrace is given below: 
01-27 12:35:51.920: ERROR/AndroidRuntime(615): FATAL EXCEPTION: main 
01-27 12:35:51.920: ERROR/AndroidRuntime(615): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.game/com.android.game.OptionsActivity}: android.util.AndroidRuntimeException: requestFeature() must be called before adding content 
01-27 12:35:51.920: ERROR/AndroidRuntime(615):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 
01-27 12:35:51.920: ERROR/AndroidRuntime(615):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
01-27 12:35:51.920: ERROR/AndroidRuntime(615):  at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
01-27 12:35:51.920: ERROR/AndroidRuntime(615):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
01-27 12:35:51.920: ERROR/AndroidRuntime(615):  at android.os.Handler.dispatchMessage(Handler.java:99) 
01-27 12:35:51.920: ERROR/AndroidRuntime(615):  at android.os.Looper.loop(Looper.java:123) 
01-27 12:35:51.920: ERROR/AndroidRuntime(615):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
01-27 12:35:51.920: ERROR/AndroidRuntime(615):  at java.lang.reflect.Method.invokeNative(Native Method) 
01-27 12:35:51.920: ERROR/AndroidRuntime(615):  at java.lang.reflect.Method.invoke(Method.java:521) 
01-27 12:35:51.920: ERROR/AndroidRuntime(615):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
01-27 12:35:51.920: ERROR/AndroidRuntime(615):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
01-27 12:35:51.920: ERROR/AndroidRuntime(615):  at dalvik.system.NativeStart.main(Native Method) 
01-27 12:35:51.920: ERROR/AndroidRuntime(615): Caused by: android.util.AndroidRuntimeException: requestFeature() must be called before adding content 
01-27 12:35:51.920: ERROR/AndroidRuntime(615):  at com.android.internal.policy.impl.PhoneWindow.requestFeature(PhoneWindow.java:172) 
01-27 12:35:51.920: ERROR/AndroidRuntime(615):  at android.app.Activity.requestWindowFeature(Activity.java:2719) 
01-27 12:35:51.920: ERROR/AndroidRuntime(615):  at com.android.game.OptionsActivity.onCreate(OptionsActivity.java:20) 
01-27 12:35:51.920: ERROR/AndroidRuntime(615):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
01-27 12:35:51.920: ERROR/AndroidRuntime(615):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 
01-27 12:35:51.920: ERROR/AndroidRuntime(615):  ... 11 more 

답변

12

이동합니다 setRequestedOrientation()를 제공합니다. 이 이미 super.onCreate()에서 요청하는 경우

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    requestWindowFeature(Window.FEATURE_NO_TITLE); 

    setContentView(com.android.internal.R.layout.preference_list_content); 

    mPreferenceManager = onCreatePreferenceManager(); 
    getListView().setScrollBarStyle(View.SCROLLBARS_INSIDE_INSET); 
} 

가 왜 FEATURE_NO_TITLE을 요청 : 그냥 이해 , 이것은 당신이 super.onCreate()를 호출 PreferenceActivity.onCreate()인가? Android 소스 코드를 파헤 치면 매우 유용합니다.

+0

이것은 작동하지 않았습니다. – Nuraiz

+3

오 예, 방금 PreferenceActivity를 확장하는 것을 보았습니다. 포맷되지 않은 텍스트를 읽기가 어렵습니다. PreferenceActivity를 확장하면 그렇게 할 수 없습니다. super.onCreate()를 호출하면 ViewGroup이 설정되므로 Window 매개 변수를 변경할 수 없습니다. 나중의 상태 (창 플래그 설정 이후)에서 super.onCreate()를 호출해야하지만, 생성 상태에서 Window 멤버에 액세스 할 수 있을지는 의문입니다. – Oliver

+0

나는 이것을 시도하고 이것이 효과가있다. 고맙습니다. – Nuraiz

9

이 경우 수퍼 유저가 컨텐트보기를 설정하므로 컨텐트보기를 설정하기 전에 requestWindowFeature를 사용해야합니다. 따라서 super를 호출하기 전에 requestWindowFeature를 사용하십시오.

public class LandNavSettings extends PreferenceActivity implements 
      SharedPreferences.OnSharedPreferenceChangeListener { 

    @Override 
    protected void onCreate(Bundle icicle) { 
      requestWindowFeature(Window.FEATURE_NO_TITLE); 
      super.onCreate(icicle);  
    } 
}