2012-01-21 31 views
26

Tôi hiện đang làm việc trên một ứng dụng Android. Tôi muốn sử dụng biểu tượng ứng dụng trong thanh tác vụ để điều hướng đến hoạt động "nhà riêng". Tôi đọc trên this trang mà tất cả những gì cần làm là thêm một số onOptionsItemSelected và tìm id android.R.id.home.Nhấp vào biểu tượng ứng dụng không kích hoạt onOptionsItemSelected()

Đây là mã mà tôi đã triển khai trong hoạt động của mình, nơi tôi muốn nhấn biểu tượng ứng dụng để quay lại HomeActivity.

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch(item.getItemId()) { 
    case android.R.id.home: 
     Intent intent = new Intent(this, HomeActivity.class); 
     intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     startActivity(intent); 
     return true; 
    default: 
     return super.onOptionsItemSelected(item); 
    } 
} 

Tuy nhiên, không có gì xảy ra. Khi gỡ lỗi, tôi có thể thấy rằng việc nhấp vào biểu tượng không kích hoạt được onOptionsItemSelected(). Tôi có phải làm gì đó với biểu tượng ở đâu đó không? Tính đến bây giờ, đó là tất cả mặc định, chỉ cần này trong AndroidManifest.xml

<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" > 
+0

Tôi đã chỉ từng thử phản ứng vào biểu tượng thanh tác vụ trong một hoạt động có menu tùy chọn. Tạm thời thêm menu tùy chọn và xem điều đó có thay đổi hành vi mà bạn thấy không. – CommonsWare

+0

Đồng thời xem xét việc chuyển cờ ['FLAG_ACTIVITY_SINGLE_TOP' để tránh khởi động lại hoạt động] (http://stackoverflow.com/a/18658364/356895). – JJD

+2

Vấn đề của tôi là tôi đã ở trong 'onOptionsItemSelected' Tôi đã có' R.id.home' thay vì 'android.R.id.home' đã khiến tôi phát điên! – mbwasi

Trả lời

40

Đối với các gói nhắm mục tiêu cấp độ API 14 trở đi, bạn cần phải kích hoạt các nút home bằng cách gọi setHomeButtonEnabled()

Trong onCreate của bạn, thêm những điều sau đây:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { 
    getActionBar().setHomeButtonEnabled(true); 
} 
+4

Cũng muốn thêm điều này cho những người sử dụng ActionBarSherlock. 'getSupportActionBar(). setHomeButtonEnabled (true);' – euniceadu

4

Nếu bạn sử dụng thanh tác vụ hỗ trợ Android mới (AppCompat), bạn cần thực hiện cả hai cuộc gọi.

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { 
    getActionBar().setHomeButtonEnabled(true); 
} 
getSupportActionBar().setHomeButtonEnabled(true); 
+2

Hàm getActionBar() trả về null với AppCompat ... – bk138

0

tôi không biết liệu chúng tôi có cùng vấn đề hay không.

nhưng, tôi đã được về vấn đề đó và bây giờ giải quyết ..

để bạn thêm

case android.R.id.home: 
    Intent intent = new Intent(this, HomeActivity.class); 
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    startActivity(intent); 
    return true; 

trong HomeActivity? này là sai ..

bạn nên đặt mã trên secondActivity của bạn .. vì nút home của bạn trên secondActivity, không HomeActivity

case android.R.id.home: 
    NavUtils.navigateUpFromSameTask(this); 
    true; 

hy vọng điều này giúp bạn

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