今天在使用自定义圆形imageview的时候,想利用其点击事件来实现查看个人资料功能,但是该空间在Activity中的onCreate方法中调用点击事件总是出现空指针异常,每次程序都进不去主页面,到处查,和同学商量,还是没有解决,最后还是看到了网友的一句话:

  • 控件A是在子布局中使用的控件,如果子布局未能成功加载,A也无法使用

意思也就是,如果 子布局在初始化界面的时候没有加载,但是你要用子布局中的控件,肯定是行不通的,所以要先在加载子布局之后实例化控件,然后定义各种操作;

下面给出我的例子:

  1. 这种事不行的,子布局中的控件在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(); }
    });
  2. 这种是可以的,首先要获得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);

不管怎样,解决了这个问题,以后要留心此类问题,记得控件实例的先后顺序,不然就会找不到,造成空指针异常

【ImageView】ImageView点击事件报错空指针的更多相关文章

  1. iOS开发——给ImageView添加点击事件

          给ImageView添加点击事件   1: cell.pictureView.userInteractionEnabled = YES; 2: UITapGestureRecognizer ...

  2. SharePoint 2013 点击"关注" 报错

    现象: 点击"关注" 报错. 解决办法: 1.确保bin文件夹下的.dll版本与web.config一致. 2.设置user porfile权限. 2.重启iis 结果如下:

  3. 【GitLab】gitlab上配置webhook后,点击测试报错:Requests to the local network are not allowed

    gitlab上配置webhook后,点击测试报错: Requests to the local network are not allowed 操作如下: 报错: 错误原因: gitlab 10.6 ...

  4. 多线程中,ResultSet为空,报错空指针

    最近在数据库查询数据时,由于数据量太大,使用了多线程,通过线程池建了好几个线程,然后调用了一个封装好的jdbc查询语句. 结果在多线程中,ResultSet报错空指针. 仔细查阅后,才发现多个线程访问 ...

  5. guava缓存设置return null一直报错空指针

    guava缓存设置return null一直报错空指针 因为缓存不允许返回为空

  6. FCKeditor编辑器第一次点击总是报错(上传图片) 之后就好了

    错误:   Failed to execute 'getRangeAt' on 'Selection': 0 is not a valid index. FCKeditor编辑器第一次点击总是报错(上 ...

  7. 【MybatisPlus】数据库的datetime类型字段为空的时候,报错空指针?

    一.发现经历 事情是这样的,我今天本来要演示系统,就去前端同学的页面上点一点.不小心点到了其他同事编写的服务,然后界面就报错了.这给我吓得,这还能演示吗这.然后,我就去服务器查看了一下日志,发现了如下 ...

  8. eclipse点击包(package)时报错,安装hibernate后点击包报错org/eclipse/jpt/common/utility/exception/ExceptionHandler

    错误描述: 当我们点击包名时,出现如下错误提示.An error has occurred. See error log for more details.org/eclipse/jpt/common ...

  9. chrome 监听touch类事件报错:无法被动侦听事件preventDefault

    先上错误信息: Unable to preventDefault inside passive event listener due to target being treated as passiv ...

随机推荐

  1. html中表格的制作

    <table summar="给表格添加摘要".> <captioan> 给表格添加标题 </caption> <tr> <t ...

  2. Ping of Death

    [Ping of Death] The ping of death attack, or PoD, can cripple a network based on a flaw in the TCP/I ...

  3. crontab使用

    结合一条命令:0 */4 * * * curl http://xxxx.abc.com/admin.php?s=/Crontab/exec_114study_urltags

  4. man curl_easy_init(原创)

    curl_easy_init(3) libcurl 手册 curl_easy_init(3) 名字 curl_easy_init - 开始一个简单的libcurl会话 梗概 #include < ...

  5. AD账号创建日期、最近一次登录时间、最近一次重置密码时间查询

    一:查询此AD域内所有用户的创建日期 Get-ADuser  -filter * -Properties * | Select-Object Name,SID, Created,PasswordLas ...

  6. Linux入门学习 常用命令

    cd命令 功能是切换到指定的目录:命令格式:cd [目录名]有几个符号作为目录名有特殊的含义:"/"代表根目录.".."代表上一级目录."~" ...

  7. codeforces 742D (分组背包)

    D. Arpa's weak amphitheater and Mehrdad's valuable Hoses   Just to remind, girls in Arpa's land are ...

  8. 类的序列化和反序列化(ObjectOutputStream和ObjectInputStream)

    1.需要序列化的类 import java.io.Serializable; /** * 必须继承 Serializable 接口才能实现序列化 */ public class Employee im ...

  9. 真正解决问题:maven eclipse tomcat java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener

    在使用eclipse进行整合springmvc时经常会碰到这样的异常: java.lang.ClassNotFoundException:org.springframework.web.context ...

  10. js 事件绑定

    事件绑定的方式 1.  DOM  元素行内绑定 <div onclick="alert(1)"></div>   2. js on+eventType do ...