2014-11-03 30 views
3

我正在寫一個應用程序,我希望用我自己製作的對象填充gridview。我的自定義對象的代碼如下。除了別的以外,我希望我的對象充滿一個上下文菜單。我可以從自定義類(而不是活動類)中爲上下文菜單充氣嗎?

我的問題是,我似乎無法使用Activity類之外的getMenuInflater()方法。 。 。爲了繞過這個限制,我將主要活動傳遞給對象。雖然這可以讓我調用getMenuInflater()方法,但在運行代碼時仍然看不到菜單。

任何幫助表示讚賞!

我知道我可以直接從Activity類充氣菜單。但是,如果可能的話,我想將所有這些功能都保存在自定義對象中。

import java.io.File; 
import android.app.Activity; 
import android.content.Context; 
import android.content.Intent; 
import android.graphics.Color; 
import android.graphics.drawable.Drawable; 
import android.media.MediaPlayer; 
import android.media.MediaPlayer.OnCompletionListener; 
import android.net.Uri; 
import android.util.AttributeSet; 
import android.util.Log; 
import android.view.ContextMenu; 
import android.view.MenuInflater; 
import android.view.MotionEvent; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.View.OnLongClickListener; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemLongClickListener; 
import android.widget.ImageView; 

public class AnimalKind extends ImageView implements OnClickListener, OnLongClickListener{ 

    private int   m_imageId, m_soundId; 
    private Context  m_ctx; 
    private Activity m_activity; 


    public AnimalKind(Context ctx, int imageId, int soundId, Activity act) { 
     super(ctx); 

     m_imageId = imageId; 
     m_activity = act; 
     m_ctx  = ctx; 
     super.setImageResource(imageId); 
     super.setAdjustViewBounds(true); 
     super.setScaleType(ImageView.ScaleType.FIT_XY); 
     super.setPadding(1, 1, 1, 1); 
     super.setBackgroundColor(Color.BLACK); 
     super.setOnClickListener(this); 
     super.setOnLongClickListener(this); 
     m_activity.registerForContextMenu(this); 
     } 


    @Override 
    protected void onCreateContextMenu(ContextMenu menu) { 
     super.onCreateContextMenu(menu); 

     MenuInflater inflater = m_activity.getMenuInflater(); 
     inflater.inflate(R.menu.animal_kind_menu, menu); 

    } 


    //@Override 
    public void onClick(View v) { 
     //Do stuff 
    } 



    @Override 
    public boolean onLongClick(View v) { 
     //Do stuff 
    } 

} 

回答

0

這裏是我工作:

public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { 

     menu.add(1, 1, 1, "Share Animal Sound"); 
     menu.add(1, 2, 2, "Change Picture"); 
     menu.add(1, 3, 3, "Change Sound"); 

     menu.getItem(0).setOnMenuItemClickListener(this); 
     menu.getItem(1).setOnMenuItemClickListener(this); 
     menu.getItem(2).setOnMenuItemClickListener(this); 
    } 
:不是試圖誇大XML格式的菜單,我只是從Java創建的菜單項直接
相關問題