2013-10-11 93 views
3


我有一個場景,我得到了菜單項名稱「點擊」在操作欄中。我想讓這個按鈕自動點擊,不用手動點擊。有沒有一種方法可以從OnCreateView()訪問android動作欄菜單項,並通過名稱「click」訪問該特定菜單項,並執行自動點擊,就像我們用方法「performclick()」使用按鈕的方式。
誰能幫我整理出這個問題如何使android動作欄菜單項自動點擊

+0

添加要在oncreateview中調用的方法 – Bora

回答

5

你可能使用類似以下處理菜單條目點擊:

@Override 
public boolean onOptionsItemSelected(MenuItem item) 
{ 
    if (item.getItemId() == android.R.id.home) 
    { 
     this.onBackPressed(); 
    } 
} 

所以就叫onOptionsItemSelected(MenuItem item)用正確的菜單項......這應該做它...

要找到你想要的點擊,只需使用類似在您的菜單創建以下項目:

private MenuItem mItem = null; 

@Override 
public boolean onCreateOptionsMenu(Menu menu) 
{ 
    getSupportMenuInflater().inflate(R.menu.abs_backup, menu); 
    // get a reference to the item you want to click manually 
    mItem = menu.findItem(id); 
    return true; 
} 

事後就叫onOptionsItemSelected(mItem);,無論你想...

PS:

它可能是更漂亮,如果你只是建立一個功能和onOptionsItemSelected調用這個函數何地,你要模擬的按鈕點擊...所以你不需要參考按鈕和對我來說,這似乎更乾淨...

1

您可以創建一個MenuItem的成員變量,並在需要時訪問它。但它可能爲空,所以請確保在訪問它之前檢查null。您也可以嘗試使用Actionbar.setCustomView(R.layout.something);,並將整個佈局和操作作爲您的順從。

protected class fragment extends Fragment{ 

    MenuItem searchItem; 

    @Override 
    public void onViewCreated(View view, Bundle savedInstanceState) { 
     if(searchItem!=null){ 
     searchItem.setTitle("SEARCH"); 
     searchItem.setOnMenuItemClickListener(menuItemClickListener); 
     } 
    } 


    @Override 
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
     super.onCreateOptionsMenu(menu, inflater); 
     inflater.inflate(com.sample.R.menu.menu_main, menu); 
     searchItem = menu.findItem(R.id.search); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     int itemId_ = item.getItemId(); 
     if (itemId_ == R.id.search) { 
     handleYourEvent(); 
     return true; 
     } 
     return false; 
    } 
} 
相關問題