【ImageView】ImageView点击事件报错空指针
2016-03-22 18:11
621 查看
今天在使用自定义圆形imageview的时候,想利用其点击事件来实现查看个人资料功能,但是该空间在Activity中的onCreate方法中调用点击事件总是出现空指针异常,每次程序都进不去主页面,到处查,和同学商量,还是没有解决,最后还是看到了网友的一句话:
控件A是在子布局中使用的控件,如果子布局未能成功加载,A也无法使用
意思也就是,如果 子布局在初始化界面的时候没有加载,但是你要用子布局中的控件,肯定是行不通的,所以要先在加载子布局之后实例化控件,然后定义各种操作;
下面给出我的例子:
这种事不行的,子布局中的控件在onCreate方法中实例化
这种是可以的,首先要获得ImageView的父布局实例,navigationView,再根据父布局实例获得ImageView,
不管怎样,解决了这个问题,以后要留心此类问题,记得控件实例的先后顺序,不然就会找不到,造成空指针异常
控件A是在子布局中使用的控件,如果子布局未能成功加载,A也无法使用
意思也就是,如果 子布局在初始化界面的时候没有加载,但是你要用子布局中的控件,肯定是行不通的,所以要先在加载子布局之后实例化控件,然后定义各种操作;
下面给出我的例子:
这种事不行的,子布局中的控件在onCreate方法中实例化
public class Main2Activity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main2); //实例化自定义控件 RoundImageView ivAvatar= (RoundImageView)findViewById(R.id.right_login_head); //设置点击事件 ivAvatar.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(Main2Activity.this, "Test onclick", Toast.LENGTH_SHORT).show(); } });
这种是可以的,首先要获得ImageView的父布局实例,navigationView,再根据父布局实例获得ImageView,
//实例化DrawerLayout布局控件 DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); /*ActionBarDrawerToggle实现了DrawerListener,所以他能做DrawerListener可以做的任何事情, 同时他还能将drawerLayout的展开和隐藏与actionbar的app 图标关联起来,当展开与隐藏的时候图标 有一定的平移效果,点击图标的时候还能展开或者隐藏菜单。*/ //使用ActionBarDrawerToggle来监听 ActionBarDrawerToggle toggle = new ActionBarDrawerToggle( this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); drawer.setDrawerListener(toggle); toggle.syncState(); //实例化NavigationView NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); //调用getHeaderView方法获得Header View headerView = navigationView.getHeaderView(0); //通过Header来获取自定义控件 ivAvatar = (ImageView) headerView.findViewById(R.id.right_login_head1);
不管怎样,解决了这个问题,以后要留心此类问题,记得控件实例的先后顺序,不然就会找不到,造成空指针异常
相关文章推荐
- live555 请求流程图------------------rtsp如何建立,rtsp source和sink怎么交互数据
- struts请求参数注入的三种方式
- 同步,异步,阻塞与非阻塞
- 递归算法
- mysql中alter语句中change和modify的区别
- 设计模式之抽象工厂模式
- 【转】Android UI开发第三十一篇——Android的Holo Theme
- [php-pear]如何使用 PHP-PEAR安装器,以及使用 PEAR 安装扩展库
- @synthesize的正确使用方式
- Java 关于Ajax的实例--验证用户名(四)
- 应用多级缓存模式支撑海量读服务
- vs2012 单元测试中Common.Logging抛异常的解决方案
- 【matlab】:matlab画图
- 一个神奇的网站(快快乐乐写时序图)
- mysql alter 语句用法,添加、修改、删除字段等
- 我的git常用命令
- 初识MongoDB
- MySQL复制表结构,表数据
- bower 简易说明
- Python小工具--删除svn文件