andiord-程序运行时强制关闭,可能为空指针

问题描述

程序运行时强制关闭,可能为空指针
日志:java.lang.RuntimeException: Unable to start activity ComponentInfo{pcAlarm.pack/pcAlarm.pack.PCAlarmActivity}: java.lang.NumberFormatException: 空指针错误,可能在
private void readSaveAlarm(){
SharedPreferences sp =getContext().getSharedPreferences(PCAlarmActivity.class.getName() Context.MODE_PRIVATE);
String content=sp.getString(KEY_ALARM_LIST null);

if (content!=null) {String[] timeString=content.split("");for (String string : timeString) {

adapter.add(new AlarmData(Long.parseLong(string)));
}
}
}方法里
package pcAlarm.pack;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.Currency;
import java.util.List;

import pcAlarm.pack.PCAlarmActivity;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.PendingIntent.OnFinished;
import android.app.TimePickerDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.provider.Contacts;
import android.view.View;
import android.widget.ArrayAdapter;
import pcAlarm.pack.AlarmView;
import pcAlarm.pack.AlarmView.AlarmData;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TabHost;
import android.widget.TimePicker;

public class PCAlarmActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tabHost = (TabHost)findViewById(android.R.id.tabhost);
tabHost.setup();

    tabHost.addTab(tabHost.newTabSpec(""tabAlarm"").setIndicator(""闹钟"").setContent(R.id.tabAlarm));    btnAddAlarm=(Button)findViewById(R.id.btnAddAlarm);    lvListView=(ListView)findViewById(R.id.lvListView);    adapter=new ArrayAdapter<PCAlarmActivity.AlarmData>(getContext() android.R.layout.simple_list_item_1);    lvListView.setAdapter(adapter);    adapter.add(new AlarmData(System.currentTimeMillis()));    readSaveAlarm();    btnAddAlarm.setOnClickListener(new OnClickListener() {        private Calendar mcalender;        @Override        public void onClick(View v) {            Calendar.getInstance().setTimeInMillis(System.currentTimeMillis());            mcalender = Calendar.getInstance();            int mHour = Calendar.getInstance().get(Calendar.HOUR_OF_DAY);            int mMinute = Calendar.getInstance().get(Calendar.MINUTE);            new TimePickerDialog(PCAlarmActivity.this new TimePickerDialog.OnTimeSetListener() {                @Override                public void onTimeSet(TimePicker view int hourOfDay int minute) {                    // TODO Auto-generated method stub                    Calendar.getInstance().setTimeInMillis(System.currentTimeMillis());                    Calendar.getInstance().set(Calendar.HOUR_OF_DAY hourOfDay);                    Calendar.getInstance().set(Calendar.MINUTE minute);                    Calendar.getInstance().set(Calendar.SECOND 0);                    Calendar.getInstance().set(Calendar.MILLISECOND 0);                    AlarmData add = new AlarmData(Calendar.getInstance().getTimeInMillis());                    saveAlarmList();                }            } mHour mMinute true).show();        }    });    lvListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {        @Override        public boolean onItemLongClick(AdapterView<?> parent View arg1                final int position long id) {            new AlertDialog.Builder(getContext()).setTitle(""操作选项"").setItems(new CharSequence[]{""删除""} new DialogInterface.OnClickListener() {                @Override                public void onClick(DialogInterface dialog int which) {                    switch (which) {                    case 0:                        deleteAlarm(position);                        break;                    default:                        break;                    }                }            }).setNegativeButton(""取消"" null).show();            return true;        }    });}private void deleteAlarm(int position){    adapter.remove(adapter.getItem(position));}private void saveAlarmList(){    Editor editor=getContext().getSharedPreferences(PCAlarmActivity.class.getCanonicalName() Context.MODE_PRIVATE).edit();    StringBuffer sb=new StringBuffer();    for (int i = 0; i < adapter.getCount(); i  ) {        sb.append(adapter.getItem(i).getTime()).append("");    }    String content = sb.toString().substring(0 sb.length()-1);    editor.putString(KEY_ALARM_LIST sb.toString().substring(0 sb.length()));    System.out.println();    editor.commit();}

解决方案

String content=sp.getString(KEY_ALARM_LIST null);

if (content!=null) { String[] timeString=content.split("");
你的代码首先不是空指针异常,而是值类型异常。那么比较可能是,首先share里没有值,可是你默认取出的是null还不是"""",所以你的content值可能是null,接下来content来跟空比较,首次肯定是要出错的。

解决方案二:

 if (content!=null) {String[] timeString=content.split("");for (String string : timeString) {//看看timeString是什么adapter.add(new AlarmData(Long.parseLong(string)));}可以加个判断for (String string : timeString) {//看看timeString是什么  if(string!=null&&string.trim().length>0){//看看是不是有空串,另外看看string是否有非数字的存在    adapter.add(new AlarmData(Long.parseLong(string)));}}

解决方案三:
java.lang.NumberFormatException 数字格式化异常,很有可能是这句adapter.add(new AlarmData(Long.parseLong(string))); 抛出的异常,
仔细检查一下你的String数组里面的内容

解决方案四:
最好搞一个txt发过来 这有点多

解决方案五:
打一下断点,运行确定每一项传回来的参数,确定谁是空值

解决方案六:
java.lang.NumberFormatException

时间: 2024-11-03 20:38:38

andiord-程序运行时强制关闭,可能为空指针的相关文章

android-程序开始运行时强制关闭,Adapter方法出错(用来实现闹钟的时间列表)

问题描述 程序开始运行时强制关闭,Adapter方法出错(用来实现闹钟的时间列表) package pcAlarm.pack; import java.util.Calendar; import java.util.Currency; import pcAlarm.pack.PCAlarmActivity; import android.app.Activity; import android.app.TimePickerDialog; import android.content.Contex

控制-自己编的程序运行时串口被程序自己占用,如何用代码强制关闭重新连接?

问题描述 自己编的程序运行时串口被程序自己占用,如何用代码强制关闭重新连接? 我用vs2010基于MFC编一个小程序,其中有一部分是用单片机转USB串口与电脑程序相连.现在问题是: 不小心动了Usb线的话,程序会卡住,在想打开串口会显示串口被占用(就是自己的程序占用).需要把USB线拔下来才能解决问题.求大侠指导,能不能用代码控制,按个软件上的button,就能自动连接上com1. 求大侠指导! 解决方案 结束进程再重启看看行不行.首先要确定卡死不是驱动的问题,如果是驱动的问题,程序就无能为力了

win7关机时强制关闭程序的设置方法

  win7关机时强制关闭程序的设置方法要修改组策略编辑器. "开始--运行",输入"gpedit.msc"打开组策略编辑器. 依次找到并展开"计算机配置→管理模板→系统→关机选项", 双击右侧窗格中的"关闭会阻止或取消关机的应用程序的自动终止功能", 在弹出的后续窗口中点击并修改为"已启用"), 应用确定后退出,这样以后再遇到未关闭的程序时, Windows7系统将自动终止并强制关机.

c++ 编程问题-程序运行时总是出现这个Process terminated with status -1073741510,求大神来帮帮忙

问题描述 程序运行时总是出现这个Process terminated with status -1073741510,求大神来帮帮忙 safearray.h文件 #ifndef SAFEARRAY_H #define SAFEARRAY_H #include template class safearray { private: T* storage; int capacity; public: safearray() : storage(NULL), capacity(0) {} // def

关于哈夫曼编码的程序运行时出错,我分析是由于cd定义出现了问题,导致后边cd[--start]出错

问题描述 关于哈夫曼编码的程序运行时出错,我分析是由于cd定义出现了问题,导致后边cd[--start]出错 void HuffmanCoding(HuffmanTree &HT,HuffmanCode &HC,int *w,int n){ //w存放n个字符的权值(均>0),构造赫夫曼树 HT,并求出n个字符的赫夫曼编码 HC printf("123"); system("pause"); int s1,s2,i,start; int f=0

文件传输-C语言中memset()如何用?下面的程序运行时为什么在文件中显示的age信息都是乱码?

问题描述 C语言中memset()如何用?下面的程序运行时为什么在文件中显示的age信息都是乱码? C语言中memset()如何用?下面的程序运行时为什么在文件中显示的age信息都是乱码? 如何改正?#include#include#define N 3 void main(){typedef struct student{ char id[6]; char name[8]; int age;}STU;FILE *fp;STU stu1[N]stu2[N];if((fp=fopen(""

iostream-请大神一看!使用tinyxml编译出来的程序运行时的错误!

问题描述 请大神一看!使用tinyxml编译出来的程序运行时的错误! 因为是新手刚学习tinyxml,所以谢了个生成xml文件的cpp试试,编译时没问题,但是程序运行时会出现:xml: malloc.c:2395: sysmalloc: Assertion `(old_top == initial_top (av) && old_size == 0) || ((unsigned long) (old_size) >= MINSIZE && prev_inuse (ol

c++程序运行时出现string subscript out of range

问题描述 c++程序运行时出现string subscript out of range int main(){ vector a; string s; while(getline(cin,s)){ a=spite(s); for(vector<string>::size_type i=0;i!=a.size();i++) cout << a[i] << endl; } return 0; } vector spite([如果在这里加上const则可以正常运行]stri

using-为什么ASP.NET程序运行时不执行,也不报错?急急,哪位大蚁帮我一把戏?

问题描述 为什么ASP.NET程序运行时不执行,也不报错?急急,哪位大蚁帮我一把戏? 点发布时,屏幕闪一下,没有任何提示,不进行验证,也没有加到SQL2005库中! 前台: <%@ Page Language="C#" validateRequest="false" CodeFile="kjxm_Edit.aspx.cs" Inherits="As_Tzxm_Edit" %> <%@ Register Tag