2015-01-06 54 views
6

Khi sử dụng Toolbar mới với thư viện hỗ trợ appcompat, có vẻ như nút Home không hoạt động như trước đây trừ khi bạn đặt menu tùy chọn hợp lệ. Một hoạt động tiêu chuẩn đơn giản và bog:Nút home trên thanh công cụ không hoạt động nếu không có menu tùy chọn

public class MyActivity extends ActionBarActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.some_page); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    ActionBar bar = getSupportActionBar(); 
    bar.setHomeButtonEnabled(true); 
    bar.setDisplayHomeAsUpEnabled(true); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
    // getMenuInflater().inflate(R.menu.some_menu, menu); 
    return super.onCreateOptionsMenu(menu); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case android.R.id.home: 
     onBackPressed() or finish() or whatever(); 
     break; 
    } 
    return super.onOptionsItemSelected(item); 
    } 
} 

Nếu có một đơn đặt trong onCreateOptionsMenu(), onOptionsItemSelected() sẽ được gọi là tất cả đúng với android.R.id.home và tất cả là tốt. Tuy nhiên, nếu không có onCreateOptionsMenu() ở tất cả (hoặc trống, hoặc trả lại true hoặc gọi chức năng super), onOptionsItemSelected() sẽ không được gọi, do đó không có cơ hội nhận được nhấp chuột vào nút Trang chủ. Tôi thậm chí đã cố gắng để vượt qua một menu trống để onCreateOptionsMenu() nhưng nó đã không giúp đỡ.

Có cách giải quyết nào cho phép chúng tôi có nút Home hoạt động trên các trang không cần menu tùy chọn chức năng không?

+0

Tôi thấy điều này bây giờ, nó trượt chú ý của tôi lúc đầu bởi vì tôi là * không * trên JB nhưng KK: http://stackoverflow.com/questions/26859841/homeasup-button-has-no-effect-in-android-4-2-2-with-appcompat-21-0-0?rq=1 –

Trả lời

0

Bạn có thể thử này ..

toolbar.setNavigationOnClickListener(new OnClickListener() { 
@Override 
public void onClick(View v) { 
Intent intent =new Intent(Context,<Destination activity); 
startActivity(intent); 
} 
}); 

Hy vọng nó sẽ giúp bạn ..

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