我想在点击ImageAdapter类中的imageView时打开一个新片段。但是,我似乎无法做到这一点。我是android studio的新手,所以也许我错过了一些重要的信息。您对如何操作有任何建议吗?我曾尝试使用片段事务来启动它们但是我似乎做得不多,因为我不在片段类本身或活动中。
图像适配器类
public class ImageAdapter extends BaseAdapter {
private Context mContext;
public ImageAdapter(Context c) {
mContext = c;
}
public int getCount() {
return mThumbIds.length;
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return 0;
}
// create a new ImageView for each item referenced by the Adapter
public View getView(final int position, final View convertView, final ViewGroup parent)
{
ImageView imageView;
if(convertView == null)
{
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(300,300));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8,8,8,8);
}
else
{
imageView = (ImageView) convertView;
}
imageView.setImageURI(mThumbIds[position]);
//check for tap
if(imageView.getDrawable() != null)
{
imageView.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Toast.makeText(mContext, "clicked", Toast.LENGTH_SHORT).show();
**//LAUNCH FRAGMENT HERE.**
}
});
}
return imageView;
}
private Uri[] mThumbIds = new Uri[20];
public void setUriArr(Uri[] uriArr){
this.mThumbIds = uriArr;
}
}
答案 0 :(得分:0)
我曾尝试使用片段事务来启动它们但是我似乎做不了多少,因为我不在片段类本身或活动中。
您只需传入FragmentManager
即可public class ImageAdapter extends BaseAdapter {
private Context mContext;
private FragmentManager mFragManager;
public ImageAdapter(Context c, FragmentManager fm) {
mContext = c;
mFragManager = fm;
}
然后在别处使用它来进行片段事务。
无论您在何处创建适配器,都应该通过Activity或Fragment本身访问FragmentManager。
确保您在此处使用正确的导入,具体取决于您是否要使用支持碎片。