2011-12-28 42 views
11

Tôi đang cố gắng làm cho trình quay của mình hoạt động như mục Hành động thả xuống Danh sách thả xuống, nhưng tôi không thể thực hiện nó chút nào, không có nhiều hướng dẫn cho điều này sau khi tìm kiếm thông qua Google. Tôi nghĩ rằng một cái gì đó của nó để làm với .setListNavigationCallbacks(); dòng mã, tôi chỉ không có ý tưởng làm thế nào để có được điều này làm việc từ dòng đó trở đi.Làm cách nào để thêm spinner vào ActionBar?

// setup action bar for spinner 
    ActionBar bar = getActionBar(); 
    bar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); 
    bar.setListNavigationCallbacks(); 

    Spinner spinner = (Spinner) findViewById(R.id.spinner1); 
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.tools_array_stopwatch, android.R.layout.simple_spinner_item); 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    spinner.setAdapter(adapter); 
    spinner.setOnItemSelectedListener(this); 
} 

public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, 
     long arg3) { 
    // TODO Auto-generated method stub 
    switch (arg2) { 
    case 0:  
     break; 

    case 1:     
     Intent countdown = new Intent(this, CountdownActivity.class); 
     startActivity(countdown);      
     break; 

    default :      
     break; 
    } 
} 

public void onNothingSelected(AdapterView<?> arg0) { 
    // TODO Auto-generated method stub 

} 

Trả lời

18

BướC# 1: Loại bỏ Spinner.

BướC# 2: Loại bỏ OnItemSelectedListener của bạn.

BướC# 3: Cung cấp thông số ArrayAdapter làm thông số đầu tiên cho setListNavigationCallbacks().

BướC# 4: Cung cấp triển khai ActionBar.OnNavigationListener làm thông số thứ hai cho setListNavigationCallbacks().

BướC# 5: Trong phương thức gọi lại onNavigationItemSelected() trong số ActionBar.OnNavigationListener, hãy thực hiện bất kỳ điều gì bạn muốn làm dựa trên thay đổi trạng thái điều hướng (ví dụ: thực hiện FragmentTransaction).

BướC# 6: Thiết kế lại ứng dụng của bạn để không bắt đầu hoạt động dựa trên lựa chọn điều hướng này, như bạn đang cố gắng ở trên. Bắt đầu hoạt động từ nút thanh công cụ hoặc mục trình đơn tùy chọn hoặc sử dụng các phần để thay thế (một phần) giao diện người dùng trên hoạt động hiện tại. Điều hướng danh sách và tab trong thanh tác vụ là không phải để khởi chạy hoạt động.

+0

"Điều hướng danh sách và tab trong thanh tác vụ không dành cho hoạt động khởi chạy". Tại sao không thể sử dụng thanh tác vụ để khởi chạy hoạt động? –

+0

@JerryBrady: Các mục tác vụ (nghĩa là các nút trên thanh công cụ) chắc chắn có ý nghĩa nhất để khởi chạy các hoạt động khác. – CommonsWare

+1

@CommonsWare: Tôi có xu hướng đồng ý, nhưng Google Maps dường như vi phạm nghiêm trọng nguyên tắc này trên ICS, mọi mục nhập trong điều hướng danh sách sẽ mở ra một hoạt động riêng biệt. Tôi không tìm thấy hành vi đặc biệt kỳ quặc này; thay vào đó câu đố tôi là cách họ quản lý để ngăn chặn các spinner một thời gian ngắn nhận được nhãn sai khi một mục được khai thác. –

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