2013-02-14 34 views
30

Tôi muốn thay đổi định hướng lập trình trong khi chạy ứng dụng Android của tôi, với những dòng mã:Thay đổi hướng màn hình trong Android mà không cần tải lại hoạt động

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE); 

Họ làm việc cho đến nay, nhưng vấn đề chính là các toàn bộ hoạt động được tải lại khi hướng màn hình thay đổi và tôi không muốn điều đó. Có thể không? Cảm ơn.

EDIT: OK, sau khi tôi phát hiện ra những gì tôi đã bỏ lỡ. Tôi đã phải bao gồm cũng "screensize" trong bất động sản configChanges, vì vậy có

android:configChanges="orientation|screenSize" 

giải quyết được toàn bộ sự việc.

+0

Tôi nghĩ bạn nên kiểm tra sự lựa chọn thứ ba trong câu trả lời này. Tôi tin rằng đó là cách PhoneGap xử lý các thay đổi định hướng http://stackoverflow.com/questions/5913130/dont-reload-application-when-orientation-changes – MikeIsrael

Trả lời

4

Bạn cần phải ghi đè onSaveInstanceState (Bundle savedInstanceState) và viết các giá trị trạng thái ứng dụng bạn muốn thay đổi các tham số Bundle

+0

+1, đây là câu trả lời chính xác => những gì anh ta đã hỏi không phải là posible , chỉ với giải pháp này, anh ta có thể làm những gì anh ta muốn, chỉ với API trên 13 android: configChanges = "orientation | screenSize" –

1

Trong AndroidManifest tập tin thêm android:configChanges="orientation" cho hoạt động bạn muốn xử lý định hướng này

Sử dụng phương thức onConfigurationChange overrided. Thực hiện tác vụ bạn muốn xử lý trong thay đổi hướng.

+0

Cảm ơn bạn, nhưng nó vẫn không hoạt động. Có thể vì tôi đang sử dụng Phonegap/HTML5 trong hoạt động? Cảm ơn bạn. – luisfer

+0

bạn có thể thêm mã khác không? –

+0

@RajShah cho những gì cần thêm mã? bạn đã đọc câu hỏi chưa? làm thế nào về tiêu đề? –

1

Gọi phương pháp này và thiết lập file manifest

android:configChanges="orientation|screenSize|keyboardHidden" 

public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 

     // Checks the orientation of the screen 
     if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { 
      Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show(); 
     } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){ 
      Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show(); 
     } 
    } 
Các vấn đề liên quan