2014-12-28 16 views
5

Tôi đã làm theo hướng dẫn này tại đây - http://developer.android.com/training/implementing-navigation/ancestral.html - để triển khai Điều hướng lên. Sắp xếp giống như người dùng nhấn nút Quay lại trên điện thoại, nhưng phương thức onBackPressed() không kích hoạt khi nhấn nút 'Lên'. Trong hướng dẫn, chúng cho thấy bạn bẫy R.id.home trong phương thức onOptionsItemSelected(). Trang web này - http://developer.android.com/reference/android/R.id.html - cho thấy rằng giá trị của R.id.home phải bằng 16908332 nhưng không có trong ứng dụng của tôi. Trong mã dưới đây nếu tôi sử dụng R.id.home nó không thành công. Nếu tôi hard-code trong 16908332 nó hoạt động. Đối với tôi, R.id.home đánh giá 21312330724. Theo trang, tất cả các giá trị R.id bắt đầu năm 1690. Tôi ghét mã hóa cứng trong một giá trị cho một giá trị tích hợp, nhưng tôi không chắc chắn những gì khác để làm. Điều này có thể gây ra sự cố trên đường không? Tôi có làm điều gì sai? Đây có phải là một lỗi?Đánh giá R.id.home

Greg

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 
    if (id == R.id.action_settings) { 
     return true; 
    } 
    //noinspection SimplifiableIfStatement 
    if (id == R.id.home) {//16908332 
     Intent upIntent = NavUtils.getParentActivityIntent(this); 

     upIntent.putExtra(CAT_ID, CatID); 
     upIntent.putExtra(USER_ID, UserID); 
     upIntent.putExtra(LIST_ID, ListID); 
     setResult(RESULT_OK, upIntent); 
     NavUtils.navigateUpTo(this, upIntent); 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 
+5

Chú ý rằng bạn nên so sánh id của bạn cho 'android.id.home', không tùy chỉnh của bạn R.id .home biến, nếu bạn có một. Kiểm tra không gian tên nhập R của bạn ở phần trên của lớp học của bạn. Nếu bạn có tùy chỉnh nhập R ở đó, bạn phải xác định đúng id của mình là android.id.home. – joao2fast4u

+1

Cảm ơn. Những gì đã làm việc là android.R.id.home. Đây là một hoạt động mới mà hầu như không có gì trong đó, đặc biệt là không có biến R.id.home tùy chỉnh. Các chỉ nhập khẩu là content.Intent, support.v4.app.NavUtils, support.v7.app.ActionBarActivity, os.Bundle, view.Menu, view.MenuItem, widget.Toast – user1091524

Trả lời

25

Bạn cần phải so sánh nó với android một:

if (id == android.R.id.home){ 
    ... 
}