请选择 进入手机版 | 继续访问电脑版

好神码

 找回密码
 立即注册

扫一扫,访问微社区

搜索
热搜: 活动 交友 discuz
查看: 1557|回复: 12

EditText使用SetText时出现空指针异常

[复制链接]

1

主题

3

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2016-7-15 21:59:14 | 显示全部楼层 |阅读模式
代码如下:
package com.sings.tushu;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
/**
* Created by Administrator on 2016/7/14.
*/
public class StudentDetail extends ActionBarActivity implements View.OnClickListener{
    private Button btnsave,btndelete,btnclose;
    private EditText edname,edage,edemail;
    private int _student_id=0;
    Student student;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.detail);

        btnsave= (Button) findViewById(R.id.btnSave);
        btnsave.setOnClickListener(this);
        btnclose= (Button) findViewById(R.id.btnClose);
        btnclose.setOnClickListener(this);
        btndelete= (Button) findViewById(R.id.btnDelete);
        btndelete.setOnClickListener(this);
        edname= (EditText) findViewById(R.id.edName);
        edname.setText(student.name);
        edage= (EditText) findViewById(R.id.edAge);
        edage.setText(String.valueOf(student.age));
        edemail= (EditText) findViewById(R.id.edEmail);
        edemail.setText(student.email);
        _student_id=0;
        Intent intent = getIntent();
        _student_id = intent.getIntExtra("student_Id",0);
        StudentRepo repo = new StudentRepo(this);
        student = repo.getStudentById(_student_id);
    }
    @Override
    public void onClick(View v) {
        if (v==findViewById(R.id.btnSave)){
            StudentRepo repo = new StudentRepo(this);
            Student student = new Student();
            student.age=Integer.parseInt(edage.getText().toString());
            student.email=edemail.getText().toString();
            student.name=edname.getText().toString();
            student.student_Id=_student_id;
            if (_student_id==0){
                _student_id=repo.insert(student);
                Toast.makeText(this,"New Student Insert",Toast.LENGTH_SHORT).show();
            }else{
                repo.update(student);
                Toast.makeText(this,"Student Record updated",Toast.LENGTH_SHORT).show();
            }
        }else if (v==findViewById(R.id.btnDelete)){
            StudentRepo repo = new StudentRepo(this);
            repo.delete(_student_id);
            Toast.makeText(this,"Student Record Deleted",Toast.LENGTH_SHORT).show();
            finish();
        }else if (v==findViewById(R.id.btnClose)){
            finish();
        }
    }
}
红字位置就是出现空指针的地方
搞了一天没弄好,麻烦大神帮忙看看,谢谢!!
是能进入界面的,但一按添加按钮,就出错了,以下是LOG
07-15 21:55:04.398 4395-4395/com.sings.tushu E/AndroidRuntime: FATAL EXCEPTION: main
                                                               Process: com.sings.tushu, PID: 4395
                                                               java.lang.RuntimeException: Unable to start activity ComponentInfo{com.sings.tushu/com.sings.tushu.StudentDetail}: java.lang.NullPointerException: Attempt to read from field 'java.lang.String com.sings.tushu.Student.name' on a null object reference
                                                                   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2509)
                                                                   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2569)
                                                                   at android.app.ActivityThread.access$900(ActivityThread.java:150)
                                                                   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1399)
                                                                   at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                   at android.os.Looper.loop(Looper.java:168)
                                                                   at android.app.ActivityThread.main(ActivityThread.java:5885)
                                                                   at java.lang.reflect.Method.invoke(Native Method)
                                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797)
                                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:687)
                                                                Caused by: java.lang.NullPointerException: Attempt to read from field 'java.lang.String com.sings.tushu.Student.name' on a null object reference
                                                                   at com.sings.tushu.StudentDetail.onCreate(StudentDetail.java:37)
                                                                   at android.app.Activity.performCreate(Activity.java:6262)
                                                                   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1125)
                                                                   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2462)
                                                                   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2569)
                                                                   at android.app.ActivityThread.access$900(ActivityThread.java:150)
                                                                   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1399)
                                                                   at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                   at android.os.Looper.loop(Looper.java:168)
                                                                   at android.app.ActivityThread.main(ActivityThread.java:5885)
                                                                   at java.lang.reflect.Method.invoke(Native Method)
                                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797)
                                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:687)
回复

使用道具 举报

0

主题

1

帖子

4

积分

新手上路

Rank: 1

积分
4
发表于 2016-7-15 23:42:04 | 显示全部楼层
是不是在xml文件里的id不对应,EditText对象没有构造出来?
回复

使用道具 举报

0

主题

1

帖子

4

积分

新手上路

Rank: 1

积分
4
发表于 2016-7-15 23:53:07 | 显示全部楼层
你在点击事件里处理的给name赋值的逻辑,调用oncreate()的时候,你的对象没有还没有创建呢,EditText.setText()肯定报空指针异常
回复

使用道具 举报

0

主题

6

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2016-7-16 08:24:16 | 显示全部楼层
student.name这个是空的,你可以先让他等于null,
回复

使用道具 举报

0

主题

5

帖子

12

积分

新手上路

Rank: 1

积分
12
发表于 2016-7-16 11:23:07 | 显示全部楼层
。。。。。。是我眼睛花了么。。。。。这不是很明显 student 为空么
所以student.name  肯定报错吖
你student压根没赋值吖。。。
上面几位 怎么 还在扯来扯去
回复

使用道具 举报

1

主题

3

帖子

9

积分

新手上路

Rank: 1

积分
9
 楼主| 发表于 2016-7-16 11:34:33 | 显示全部楼层
@liudashao0
什么意思?
是要把student.name=edname.getText().toString();放到onCreate里吗?
回复

使用道具 举报

1

主题

3

帖子

9

积分

新手上路

Rank: 1

积分
9
 楼主| 发表于 2016-7-16 11:39:28 | 显示全部楼层
@qq840727854
我的student=repo.getStudentById(_student_id);
赋值了呀
回复

使用道具 举报

0

主题

5

帖子

12

积分

新手上路

Rank: 1

积分
12
发表于 2016-7-16 11:47:37 | 显示全部楼层
引用 6 楼 qq_29954515 的回复:@qq840727854
我的student=repo.getStudentById(_student_id);
赋值了呀

  edname.setText(student.name);
        edage= (EditText) findViewById(R.id.edAge);
        edage.setText(String.valueOf(student.age));
        edemail= (EditText) findViewById(R.id.edEmail);
        edemail.setText(student.email);
        _student_id=0;
        Intent intent = getIntent();
        _student_id = intent.getIntExtra("student_Id",0);
        StudentRepo repo = new StudentRepo(this);
        student = repo.getStudentById(_student_id);
是新手么???  前面 用到了  后面才赋值? 能不空么
回复

使用道具 举报

0

主题

1

帖子

4

积分

新手上路

Rank: 1

积分
4
发表于 2016-7-18 10:31:58 | 显示全部楼层
什么鬼、、、代码也是有先后的好伐,先赋值
回复

使用道具 举报

0

主题

2

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2016-8-3 16:03:24 | 显示全部楼层
引用 楼主 qq_29954515 的回复:代码如下:
是能进入界面的,但一按添加按钮,就出错了,以下是LOG
07-15 21:55:04.398 4395-4395/com.sings.tushu E/AndroidRuntime: FATAL EXCEPTION: main
                                                               Process: com.sings.tushu, PID: 4395
                                                               java.lang.RuntimeException: Unable to start activity ComponentInfo{com.sings.tushu/com.sings.tushu.StudentDetail}: java.lang.NullPointerException: Attempt to read from field 'java.lang.String com.sings.tushu.Student.name' on a null object reference
                                                                   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2509)
                                                                   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2569)
                                                                   at android.app.ActivityThread.access$900(ActivityThread.java:150)
                                                                   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1399)
                                                                   at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                   at android.os.Looper.loop(Looper.java:168)
                                                                   at android.app.ActivityThread.main(ActivityThread.java:5885)
                                                                   at java.lang.reflect.Method.invoke(Native Method)
                                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797)
                                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:687)
                                                                Caused by: java.lang.NullPointerException: Attempt to read from field 'java.lang.String com.sings.tushu.Student.name' on a null object reference
                                                                   at com.sings.tushu.StudentDetail.onCreate(StudentDetail.java:37)
                                                                   at android.app.Activity.performCreate(Activity.java:6262)
                                                                   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1125)
                                                                   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2462)
                                                                   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2569)
                                                                   at android.app.ActivityThread.access$900(ActivityThread.java:150)
                                                                   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1399)
                                                                   at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                   at android.os.Looper.loop(Looper.java:168)
                                                                   at android.app.ActivityThread.main(ActivityThread.java:5885)
                                                                   at java.lang.reflect.Method.invoke(Native Method)
                                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797)
                                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:687)

Caused by: java.lang.NullPointerException: Attempt to read from field 'java.lang.String com.sings.tushu.Student.name' on a null object reference
引发错误的原因:空指针意外: 试图去读取字符串,tushu(图书).Student.name 在一个空的对象引用上.
也就是说:你的 edname= (EditText) findViewById(R.id.edName); 和 XML 里面的对应不上.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|好神码 ( 粤ICP备18029814号-1 )

GMT+8, 2021-12-7 16:22 , Processed in 0.102765 second(s), 4 queries , File On.

Powered by haoshenma V1.0

© 2018-2048 haoshenma

快速回复 返回顶部 返回列表