在片段图库 [英] Gallery in a Fragment
问题描述
我有关于实施画廊成片段一点点麻烦。我试图把在用的画廊是一个活动,但我想它现在是一个片段,因为我现在的工作在不同的项目,使我的应用程序看起来更干净。我在
得到一个错误 gridView.setAdapter(新ImageAdapter(本));
和
意向书我=新的意向书(getApplicationContext(),FullImageActivity.class);
老实说,我不知道如何解决这些任何帮助将真棒酱
另外,我没有与碎片太多的经验,我很新的它,任何细节,可以帮助我理解我在做什么错的欢迎!
下面是在Java code:
包info.androidhive.slidingmenu;
进口android.app.Activity;
进口android.app.Fragment;
进口android.content.Context;
进口android.content.Intent;
进口android.os.Bundle;
进口android.view.LayoutInflater;
进口android.view.View;
进口android.view.ViewGroup;
进口android.widget.AdapterView;
进口android.widget.AdapterView.OnItemClickListener;
进口android.widget.BaseAdapter;
进口android.widget.GridView;
进口android.widget.ImageView;
公共类GalleryActivity扩展片段{
@覆盖
公共无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState); }
//setContentView(R.layout.gallery_layout);
公共查看onCreateView(LayoutInflater吹气,父母的ViewGroup,
捆绑saedInstanceState){
查看rootView = inflater.inflate(R.layout.gallery_layout,父母,假);
GridView控件的GridView =(GridView控件)rootView.findViewById(R.id.photos);
// ImageAdapter类的实例
gridView.setAdapter(新ImageAdapter(本));
gridView.setOnItemClickListener(新OnItemClickListener(){
@覆盖
公共无效onItemClick(适配器视图<>母公司,视图V,
INT位置,长的id){
//发送图片ID为FullScreenActivity
意图I =新的意图(getApplicationContext(),FullImageActivity.class);
//通过数组索引
i.putExtra(ID,位置);
startActivity(ⅰ);
}
});
}
}
更改此
gridView.setAdapter(新ImageAdapter(本));
到
gridView.setAdapter(新ImageAdapter(getActivity()));
这
并不是指活动上下文因为你的类扩展片段。 getActvity()
返回此片段与相关联的活动。
也改变
意向书我=新的意向书(getApplicationContext(),FullImageActivity.class);
到
意向书我=新的意向书(getActivity(),FullImageActivity.class);
此外,你需要在onCreateView的最后返回rootView
@Override //缺少注释
公共查看onCreateView(LayoutInflater吹气,父母的ViewGroup,
捆绑saedInstanceState){
查看rootView = inflater.inflate(R.layout.gallery_layout,父母,假);
... //的code休息
返回rootView;
}
或覆盖 onActivityCreated
和使用 getView
初始化gridview的。刚刚返回视图 onCreateView
@Override //缺少注释
公共查看onCreateView(LayoutInflater吹气,父母的ViewGroup,
捆绑saedInstanceState){
查看rootView = inflater.inflate(R.layout.gallery_layout,父母,假);
返回rootView;
}
然后
@覆盖
公共无效onActivityCreated(包savedInstanceState){
GridView控件的GridView =(GridView控件)getView()findViewById(R.id.photos)。
// ImageAdapter类的实例
gridView.setAdapter(新ImageAdapter(getActivity()));
gridView.setOnItemClickListener(新OnItemClickListener(){
@覆盖
公共无效onItemClick(适配器视图<>母公司,视图V,
INT位置,长的id){
//发送图片ID为FullScreenActivity
意图I =新的意图(getActivity(),FullImageActivity.class);
//通过数组索引
i.putExtra(ID,位置);
startActivity(ⅰ);
}
});
}
I'm having a little bit of trouble on implementing a gallery into a Fragment. The gallery I'm trying to put in used to be an Activity but I want it to now be a Fragment since I'm now working on a different project to make my app look more cleaner. I'm getting an error at
gridView.setAdapter(new ImageAdapter(this));
and at
Intent i = new Intent(getApplicationContext(), FullImageActivity.class);
I honestly have no idea on how to fix these any help would be awesome sauce
Also, I don't have much experience with Fragments and I'm quite new to it so any details that could help me understand what I'm doing wrong is welcomed!
Here's the Java code:
package info.androidhive.slidingmenu;
import android.app.Activity;
import android.app.Fragment;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
public class GalleryActivity extends Fragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); }
//setContentView(R.layout.gallery_layout);
public View onCreateView(LayoutInflater inflater, ViewGroup parent,
Bundle saedInstanceState) {
View rootView = inflater.inflate(R.layout.gallery_layout, parent, false);
GridView gridView = (GridView) rootView.findViewById(R.id.photos);
// Instance of ImageAdapter Class
gridView.setAdapter(new ImageAdapter(this));
gridView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
// Sending image id to FullScreenActivity
Intent i = new Intent(getApplicationContext(), FullImageActivity.class);
// passing array index
i.putExtra("id", position);
startActivity(i);
}
});
}
}
Change this
gridView.setAdapter(new ImageAdapter(this));
to
gridView.setAdapter(new ImageAdapter(getActivity()));
this
does not refer to Activity Context since your class extends Fragment. getActvity()
returns the activity this fragment is associated with.
Also change
Intent i = new Intent(getApplicationContext(), FullImageActivity.class);
to
Intent i = new Intent(getActivity(), FullImageActivity.class);
Also you need to return rootView at the end of onCreateView
@Override // missing annotation
public View onCreateView(LayoutInflater inflater, ViewGroup parent,
Bundle saedInstanceState) {
View rootView = inflater.inflate(R.layout.gallery_layout, parent, false);
...// rest of the code
return rootView;
}
Or Override onActivityCreated
and use getView
to initialize gridview. just return view in onCreateView
@Override // missing annotation
public View onCreateView(LayoutInflater inflater, ViewGroup parent,
Bundle saedInstanceState) {
View rootView = inflater.inflate(R.layout.gallery_layout, parent, false);
return rootView;
}
Then
@Override
public void onActivityCreated(Bundle savedInstanceState) {
GridView gridView = (GridView) getView().findViewById(R.id.photos);
// Instance of ImageAdapter Class
gridView.setAdapter(new ImageAdapter(getActivity()));
gridView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
// Sending image id to FullScreenActivity
Intent i = new Intent(getActivity(), FullImageActivity.class);
// passing array index
i.putExtra("id", position);
startActivity(i);
}
});
}
这篇关于在片段图库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!