在片段图库 [英] Gallery in a Fragment

查看:110
本文介绍了在片段图库的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有关于实施画廊成片段一点点麻烦。我试图把在用的画廊是一个活动,但我想它现在是一个片段,因为我现在的工作在不同的项目,使我的应用程序看起来更干净。我在

得到一个错误

  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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆