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
}
}