2 android com android_com 于 2015.07.24 09:05 提问

Android中空指针异常的具体错误改正

import java.sql.Date;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import android.app.Activity;
import android.app.Dialog;
import android.content.Intent;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {

private ImageView zy, ZyImge;
private TextView ZyLine, ZyLeade, ZyAb;
private String url;


private SimpleAdapter adapter;
private DBUtil dbUtil;
protected static final int MSG_OK = 0;
private ListView lv = null;
//private MyAdapter myAdapter = null;
private List<Card> list = new ArrayList<Card>();

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.adapter_item);
    zy = (ImageView) findViewById(R.id.zhengyou_list_img);
    ZyImge = (ImageView) findViewById(R.id.zhengyou_list_luxian);
    ZyLeade = (TextView) findViewById(R.id.zhengyou_list_name);
    ZyLine = (TextView) findViewById(R.id.zhengyou_list_title);
    ZyAb = (TextView) findViewById(R.id.zhengyou_list_time);

    final String ZyLines = getIntent().getExtras().getString("ZyLines");
    final String ZyImage = getIntent().getExtras().getString("ZyImage");
    final String ZyLeader = getIntent().getExtras().getString("ZyLeader");
    final String ZyAbs = getIntent().getExtras().getString("ZyAbs");

    ZyLine.setText(ZyLines);

    ZyLeade.setText(ZyLeader);
    ZyAb.setText(ZyAbs);


}

}

logcat中错误提示:
Caused by: java.lang.NullPointerException
07-24 09:00:34.209: E/AndroidRuntime(9339): at com.example.lianwang.MainActivity.onCreate(MainActivity.java:55)
07-24 09:00:34.209: E/AndroidRuntime(9339): at android.app.Activity.performCreate(Activity.java:5122)
07-24 09:00:34.209: E/AndroidRuntime(9339): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1081)
07-24 09:00:34.209: E/AndroidRuntime(9339): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2270)

我想问如何改正,错误的原因是什么

6个回答

CSDNXIAOD
CSDNXIAOD   2015.07.24 09:07
已采纳

android 创建AVD时报空指针异常
Android中的getLastKnowLocation空指针异常
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

danielinbiti
danielinbiti   Ds   Rxr 2015.07.24 09:11
MainActivity.java:55
 看一下MainActivity.java第55行是什么
 这里可能空指针的一般看findViewById有没有找到对应的组件,如果没找到
 ZyLine.setText(ZyLines); 
    ZyLeade.setText(ZyLeader);
    ZyAb.setText(ZyAbs);
        上面几个都会报空指针
        另外看参数都否传入getIntent().getExtras()

        这段代码主要这两种空指针
Arnold9009
Arnold9009   2015.07.24 09:58

是不是ZyImage命名冲突导致的?

ccnnexe
ccnnexe   2015.07.24 11:20

首先,以你MainActivity的命名来看,这个Activity很可能是你应用的第一个活动,也就是打开应用最先看到的就是这个activity,如果是这样那你这些代码:
final String ZyLines = getIntent().getExtras().getString("ZyLines");
final String ZyImage = getIntent().getExtras().getString("ZyImage");
final String ZyLeader = getIntent().getExtras().getString("ZyLeader");
final String ZyAbs = getIntent().getExtras().getString("ZyAbs");

    是不可能获取到值的。
    这几句的带码可以理解为从别的activity跳转到本avtivity时附带的值,你直接就打开这个activity所以时不会取到值的。

    然后报错已经报得很明确了,你要学会看报错的信息。MainActivity的第55行出现了空指针,可能第55使用了未定义或者错误定义的对象。

    最后是我猜测
    zy = (ImageView) findViewById(R.id.zhengyou_list_img);
ZyImge = (ImageView) findViewById(R.id.zhengyou_list_luxian);
ZyLeade = (TextView) findViewById(R.id.zhengyou_list_name);
ZyLine = (TextView) findViewById(R.id.zhengyou_list_title);
ZyAb = (TextView) findViewById(R.id.zhengyou_list_time);

    这些代码里的id所指的控件不在adapter_item这个xml文件里,所以找不到,然后后面直接setText,所以出现了空指针。
xrc906522694
xrc906522694   2015.07.24 13:05

首先,以你MainActivity的命名来看,这个Activity很可能是你应用的第一个活动,也就是打开应用最先看到的就是这个activity,如果是这样那你这些代码:
final String ZyLines = getIntent().getExtras().getString("ZyLines");
final String ZyImage = getIntent().getExtras().getString("ZyImage");
final String ZyLeader = getIntent().getExtras().getString("ZyLeader");
final String ZyAbs = getIntent().getExtras().getString("ZyAbs");
是不可能获取到值的。
这几句的带码可以理解为从别的activity跳转到本avtivity时附带的值,你直接就打开这个activity所以时不会取到值的。

然后报错已经报得很明确了,你要学会看报错的信息。MainActivity的第55行出现了空指针,可能第55使用了未定义或者错误定义的对象。

最后是我猜测
zy = (ImageView) findViewById(R.id.zhengyou_list_img);

ZyImge = (ImageView) findViewById(R.id.zhengyou_list_luxian);
ZyLeade = (TextView) findViewById(R.id.zhengyou_list_name);
ZyLine = (TextView) findViewById(R.id.zhengyou_list_title);
ZyAb = (TextView) findViewById(R.id.zhengyou_list_time);

这些代码里的id所指的控件不在adapter_item这个xml文件里,所以找不到,然后后面直接setText,所以出现了空指针。
ccnnexe
ccnnexe   2015.07.24 11:20

首先,以你MainActivity的命名来看,这个Activity很可能是你应用的第一个活动,也就是打开应用最先看到的就是这个activity,如果是这样那你这些代码:
final String ZyLines = getIntent().getExtras().getString("ZyLines");
final String ZyImage = getIntent().getExtras().getString("ZyImage");
final String ZyLeader = getIntent().getExtras().getString("ZyLeader");
final String ZyAbs = getIntent().getExtras().getString("ZyAbs");

    是不可能获取到值的。
    这几句的带码可以理解为从别的activity跳转到本avtivity时附带的值,你直接就打开这个activity所以时不会取到值的。

    然后报错已经报得很明确了,你要学会看报错的信息。MainActivity的第55行出现了空指针,可能第55使用了未定义或者错误定义的对象。

    最后是我猜测
    zy = (ImageView) findViewById(R.id.zhengyou_list_img);
ZyImge = (ImageView) findViewById(R.id.zhengyou_list_luxian);
ZyLeade = (TextView) findViewById(R.id.zhengyou_list_name);
ZyLine = (TextView) findViewById(R.id.zhengyou_list_title);
ZyAb = (TextView) findViewById(R.id.zhengyou_list_time);

    这些代码里的id所指的控件不在adapter_item这个xml文件里,所以找不到,然后后面直接setText,所以出现了空指针。
Csdn user default icon
上传中...
上传图片
插入图片