2011-08-20 18 views
5

--Thư câu trả lời mang tính chất là câu trả lời của tôi mà tôi giải quyết vấn đề này với .--App treo trong FroYo & Gingerbread

Tôi đã viết một ứng dụng dành cho Android, tất cả đang làm việc tốt trong Honeycomb, nhưng không chơi đẹp trên thiết bị FroYo & Gingerbread của mình (đối diện với những gì bạn mong đợi đúng).

Đây là mã mà tôi tin là gây ra vấn đề:

@Override 
protected void onStart() { 
    int versionNumber = Integer.valueOf(android.os.Build.VERSION.SDK); 
    if (versionNumber == 11) { 
     super.onStart(); 
     ActionBar actionBar = this.getActionBar(); 
     actionBar.setDisplayHomeAsUpEnabled(true); 
    } 
} 

Ở đây tôi thực hiện khả năng icon-up-to-nhà của ActionBar, tôi đã thêm biến VERSIONNUMBER như tôi tin rằng việc thiếu một ActionBar trong các thiết bị tiền Honyecomb đã gây ra vấn đề khi hoạt động được chạy, nhưng nó vẫn treo và tôi tin rằng đây là vấn đề, mặc dù tôi khủng khiếp với việc gỡ lỗi và không hiểu bất cứ điều gì tôi được đưa ra bởi logcat.

Chỉnh sửa: logcat - Tôi hy vọng tôi có đúng mục ?!

08-20 17: 21: 41,326: WARN/ActivityManager (2707): Đang cố gắng để khởi động com.squirculardesign.android.pixel/.About 08-20 17: 21: 41,346: INFO/dalvikvm (4059): Không thể tìm thấy phương thức com.squirculardesign.android.pixel.About.getActionBar, được tham chiếu từ phương thức com.squirculardesign.android.pixel.About.onStart 08-20 17: 21: 41.346: WARN/dalvikvm (4059): VFY: không thể giải quyết phương thức ảo 54: Lcom/squirculardesign/android/pixel/About; .getActionBar () Landroid/app/ActionBar; 08-20 17: 21: 41.346: DEBUG/dalvikvm (4059): VFY: thay thế mã opcode 0x6e tại 0x0011 08-20 17: 21: 41.346: DEBUG/dalvikvm (4059): VFY: mã chết 0x0014-0018 trong Lcom/squirculardesign/android/pixel/About; .onStart() V 08-20 17: 21: 41.386: INFO/ALSAModule (2588): Đã khởi tạo thiết bị ALSA PLAYBACK hifi 08-20 17: 21: 41.386: WARN/AudioFlinger (2588): viết bị chặn cho 108 msecs, 3 bị trì hoãn viết, chủ đề 0x5e758 08-20 17: 21: 41.406: DEBUG/dalvikvm (4059): GC_EXTERNAL_ALLOC giải phóng 38K, 52% miễn phí 2621K/5379K, bên ngoài 190K/518K , bị tạm dừng 36ms 08-20 17: 21: 41.596: INFO/AudioFlinger (2588): dừng đầu ra streamType (0, 1) cho 1 08-20 17: 21: 41.596: DEBUG/AudioHardwareYamaha (2588): AudioStreamOut :: setParameters (keyValuePairs = "stop_output_streamtype = 1") 08-20 17: 21: 42.096: ERROR/yamaha :: media :: Parameters (2588): SalesCode = OPS 08-20 17: 21: 42.671: L ERI/đèn (2707): write_int: đường dẫn /sys/devices/virtual/misc/melfas_touchkey/độ sáng, giá trị 2 08-20 17: 21: 42.671: WARN/PowerManagerService (2707): Timer 0x7-> 0x3 | 0x3 08-20 17: 21: 42.671: INFO/PowerManagerService (2707): Ulight 7-> 3 | 0 08-20 17: 21: 42.671: DEBUG/PowerManagerService (2707): setLightBrightness: mButtonLight: 0 08-20 17: 21: 43.666: INFO/ALSAModule (2588): Chấm dứt ALSA PLAYBACK thiết bị hifi 08-20 17: 21: 44.086: LRI/yamaha :: phương tiện :: Thông số (2588): Mã doanh số = OPS 08-20 17 : 21: 51.181: WARN/Ac tivityManager (2707): Thời gian chờ khởi chạy đã hết hạn, bỏ khóa đánh thức! 08-20 17: 21: 51.336: WARN/ActivityManager (2707): Thời gian chờ hoạt động nhàn rỗi cho HistoryRecord {40a6f0a8 com.squirculardesign.android.pixel/.About} 08-20 17: 21: 56.456: DEBUG/dalvikvm (2929): GC_EXPLICIT giải phóng 672K, 53% miễn phí 3917K/8327K, bên ngoài 12588K/12670K, bị tạm dừng 121ms 08-20 17: 22: 01.876: INFO/StatusBarPolicy (2834): onSignalStrengthsChanged 08-20 17:22:04.006: DEBUG/BatteryService (2707): cập nhật bắt đầu 08-20 17: 22: 04.011: ERROR/BatteryService (2707): Trạng thái TMU = 0 08-20 17: 22: 04.011: DEBUG/BatteryService (2707): updateBattery mức: 79 quy mô: 100 tình trạng: 2 y tế: 2 mặt: điện áp đúng: 4050 nhiệt độ: 270 công nghệ: Li-ion AC powered: false USB powered: biểu tượng đúng: 17302229

+0

Bạn có thể đăng lỗi từ logcat không? – arunkumar

+0

Đã thêm, tôi hy vọng tôi đã sao chép phần chính xác? Cũng thế; định dạng rất tiếc. – rabbitt

+0

Chỉ cần nói, đó là một ý tưởng tồi để kiểm tra số phiên bản SDK chính xác. Ít nhất bạn nên làm> = để tương thích với các phiên bản trong tương lai (khi bạn không thể kiểm tra một tính năng cụ thể). – aberaud

Trả lời

6

này luôn luôn có thể xảy ra, tôi đặt câu hỏi và vấn đề trở nên rõ ràng hơn trong tâm trí của tôi sau khi đã giải thích nó để ai đó không trong bối cảnh có thể hiểu ...

việc sửa chữa tôi thấy được:

//Sets the icon to 'go home' button 
@Override 
protected void onStart() { 
    int versionNumber = Integer.valueOf(android.os.Build.VERSION.SDK); 
    if (versionNumber >= 11) { 
      super.onStart(); 
      ActionBar actionBar = this.getActionBar(); 
      actionBar.setDisplayHomeAsUpEnabled(true); 
    } 
    else { 
      super.onStart(); 
    } 
} 

này sửa chữa các vấn đề ở cả Gingerbread & FroYo, sự khác biệt là super.onS Chua cay(); chúng tôi kích hoạt không có vấn đề gì.

Đối với những người bạn chắc chắn sẽ bình luận về bản sửa lỗi hack/dính của tôi: Ứng dụng cụ thể này không cần ActionBar, tôi chỉ sử dụng các mục ActionBar trong Honeycomb vì nó đã trở thành thực hành UI nhiêu hanh động hơn. Đây là lý do tại sao tôi đã không thực hiện một Ac

+1

Đây là câu trả lời của tôi mà tôi tìm thấy, nhưng phải đăng nặc danh vì tôi không thể đăng câu trả lời cho câu hỏi của riêng mình trong 8 giờ cho đến khi đại diện của tôi> 100, vì vậy vui lòng +1 câu hỏi của tôi để tôi có thể: P. – rabbitt

+1

Tại sao không super.onStart() đầu tiên, sau đó làm các dòng thanh hành động trong if và bin khác? – Hamid

3

bạn đã đăng nhập gì VERSIONNUMBER Thực sự là? Tôi đoán tuyên bố của bạn nếu bằng cách nào đó là sự thật. Vì vậy, hãy thử đăng nhập những gì versionNumber bằng.

Bạn thực sự nên sử dụng

int versionNumber = android.os.Build.VERSION.SDK_INT 
0

Kiểm tra cũng này:

public boolean onOptionsItemSelected(MenuItem item) { 

if(item.getItemId()==android.R.id.home){ 
    Intent intent = new Intent(this, YourHomeActivity.class); 
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    startActivity(intent); 
    return true; 
} 

Bạn phải khai báo "item.getItemId() == android.R.id.home", và mười "cho" các tên của hoạt động Trang chủ của bạn "YourHomeActivity.class". Bây giờ khi ai đó nhấn nút "lên" bạn sẽ được chuyển hướng đến hoạt động Trang chủ của bạn "YourHomeActivity.class".

Các vấn đề liên quan