qq_35624982 2016-07-19 05:14 采纳率: 100%
浏览 1103
已采纳

新手求大神帮助。仿照window7写的图片浏览器,运行一直显示空指针异常,求帮助,谢谢

package com.xpc.picture;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.FrameLayout.LayoutParams;
import android.widget.GridView;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.ViewSwitcher.ViewFactory;

/*
*一直都是空指针异常,求大神指点一点
*/

public class MainActivity extends Activity {

private int[] imageId = new int[]{R.drawable.a,R.drawable.b,R.drawable.c,
        R.drawable.e,R.drawable.f,R.drawable.g,R.drawable.h,
        R.drawable.i};//定义并初始化保存图片IDde 数组
private ImageSwitcher imageSwitcher;  //申明一个图像切换器对象

GridView gridview = (GridView) findViewById(R.id.gridview1);

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    imageSwitcher = (ImageSwitcher) findViewById(R.id.imageSwitcher1);
    imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(this,android.R.anim.fade_in));//设置淡入动画
    imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this,android.R.anim.fade_out));//淡出效果
    imageSwitcher.setFactory(new ViewFactory() {

        @Override
        public View makeView() {
            // TODO Auto-generated method stub
            ImageView imageView = new ImageView(MainActivity.this);//实例化一个ImageView类的对象
            imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
            imageView.setLayoutParams(new ImageSwitcher.LayoutParams(LayoutParams.WRAP_CONTENT,
                    LayoutParams.WRAP_CONTENT));//设置保持纵横比居中缩放图像
            //是否导包错误???这是要导什么包,太多了

            return imageView;
        }
    });     
    imageSwitcher.setImageResource(imageId[6]);

    BaseAdapter adapter = new BaseAdapter(){

        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return imageId.length;
        }

        @Override
        public Object getItem(int position) {
            // TODO Auto-generated method stub
            return position;
        }

        @Override
        public long getItemId(int position) {
            // TODO Auto-generated method stub
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            // TODO Auto-generated method stub
            ImageView imageview;
            if(convertView==null){
                imageview = new ImageView(MainActivity.this);
                imageview.setAdjustViewBounds(true);
                imageview.setMaxWidth(150);//设置长度宽度
                imageview.setMaxHeight(113);
                imageview.setPadding(5,5, 5,5);//设置内边距
            }else{
                imageview=(ImageView) convertView;
            }
            imageview.setImageResource(imageId[position]);//设置要显示的图片
            return imageview;
        }

    };

    gridview.setAdapter(adapter);
    gridview.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            // TODO Auto-generated method stub
            imageSwitcher.setImageResource(imageId[position]);

        }
    });
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

}

布局文件
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<GridView 
    android:id="@+id/gridview1"
    android:layout_height="match_parent"
    android:layout_width="640dp"
    android:layout_marginTop="10dp"
    android:horizontalSpacing="3dp"
    android:verticalSpacing="3dp"
    android:numColumns="4"
    />
<ImageSwitcher 
    android:id="@+id/imageSwitcher1"
    android:padding="20dp"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    />

  • 写回答

3条回答 默认 最新

  • 东风玖哥 2016-07-20 02:47
    关注

    GridView gridview = (GridView) findViewById(R.id.gridview1);应该写在setContentView(R.layout.activity_main);后面的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog