2

我有這樣的自定義ActionProvider。Android支持庫v7,無法獲得ActionProvider

.... 
import android.support.v4.view.ActionProvider; 

public class MyActionProvider extends ActionProvider { 
    .... 
} 

並在menu.xml文件

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:yourapp="http://schemas.android.com/apk/res-auto" > 
    <item android:id="@+id/example_action_provider" 
    yourapp:showAsAction="ifRoom" 
    android:title="More" 
    android:icon="@drawable/abc_ic_menu_moreoverflow_normal_holo_light" 
    yourapp:actionProviderClass="com.example.MyActionProvider" /> 
</menu> 

我試圖讓ActionProvider與此代碼:

import android.support.v4.view.ActionProvider; 

public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    inflater.inflate(R.menu.menu, menu); 
    MenuItem menuItem = menu.findItem(R.id.example_action_provider); 
    Object hack = menuItem.getActionProvider(); 
    ActionProvider actionProvider = (ActionProvider)hack; 
    super.onCreateOptionsMenu(menu, inflater); 
} 

menuItem.getActionProvider返回android.support.v7.internal.view .menu.MenuItemWrapperJB $ ActionProviderWrapperJB類型的對象。它不能轉換爲android.support.v4.view.ActionProvider。由於MyActionProvider獲取了一些點擊事件,它需要告訴片段或活動。如何處理這種情況?

回答