0

我有兩個片段活動和一個片段。這裏的邏輯應用程序看起來像:在片段活動中實現選項菜單

FragmentActivity A ==> Fragment B ==> FragmentActivity C. 

FragmentActivity A是B片段父活動,並有一個選項菜單,顯示correctly.Fragment B包含一個ListView。當在片段B上單擊列表項時,其細節顯示在FragmentActivity C.現在我想在actionBar中的C中顯示一個選項菜單。但是,菜單僅在單擊菜單按鈕後才顯示。我希望它作爲一個操作欄動作。

下面是活動C中的代碼:

public class LatestDetailsFragment extends FragmentActivity implements 
    OnItemClickListener { 

public LatestDetailsFragment() { 
    photoImages = new ImageItem(); 
} 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.fragment_latestdetails); 

    gallery.setOnItemClickListener(this); 
    // setHasOptionsMenu(true); 
} 


    @Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.details_fragment_menu, menu); 

    return super.onCreateOptionsMenu(menu); 
} 

/* * 
* Called when invalidateOptionsMenu() is triggered 
*/ 
@Override 
public boolean onPrepareOptionsMenu(Menu menu) { 
    return super.onPrepareOptionsMenu(menu); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle item selection 
    switch (item.getItemId()) { 
    case R.id.contact: 
     ContactOwnerFragment contactFragment = new ContactOwnerFragment(); 
     Bundle bundle = new Bundle(); 
     bundle.putString(KEY_PHONE, phone); 
     contactFragment.setArguments(bundle); 
     contactFragment.show(getSupportFragmentManager(), "contact"); 
     return true; 
    default: 
     return super.onOptionsItemSelected(item); 
    } 
} 

和菜單:

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
tools:context="be.hcpl.android.example.MainActivity" > 

<item 
    android:id="@+id/contact" 
    android:icon="@drawable/ic_action_call" 
    android:orderInCategory="100" 
    android:title="@string/contact" 
    app:showAsAction="ifRoom|withText"> 
</item> 

,因爲它提出了一個錯誤,我不能在活動中使用setHasOptionsMenu(true);,我不不知道爲什麼。我想在操作欄上顯示一個圖標。

回答

1

在充氣菜單之前,您需要使用menu.clear()

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

Documents

公共抽象無效明確()從菜單中刪除所有現有的項目,留下空的,就好像它剛剛被創建。