繁体   English   中英

小部件中的空指针异常

Null Pointer exception in widget

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

team1name在widget类的开头初始化

String team1name = null;

但是当我从getAcronym()返回一个字符串并分配给team1name时,我得到一个空指针异常。 我该如何解决这个问题

public void onReceive(Context context, Intent intent){
    Bundle extras = intent.getExtras();
    if (extras == null) {
        return;
    }

    team1name = extras.getString("team1name");
    team2name = extras.getString("team2name");
    team1score = extras.getString("team1score");

    team2score=extras.getString("team2score");

    player1=extras.getString("player1");
    player2=extras.getString("player2");
    extras=null;

    team1name=getAcronym(team1name);        // Null Pointer Exception
    team2name=getAcronym(team2name);

    RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_layout);

    remoteViews.setTextViewText(R.id.team1name, team1name);
    remoteViews.setTextViewText(R.id.team2name, 
    ComponentName cn = new ComponentName(context, MyWidgetProvider.class);  

    AppWidgetManager.getInstance(context).updateAppWidget(cn, remoteViews);
}


String getAcronym(String teamName){
    if(teamName.equals("Australia")){
        teamName="AUS";
    }else if(teamName.equals("Pakistan")){
        teamName="PAK";
    }else if(teamName.equals("India")){
        teamName="IND";
    }else if(teamName.equals("England")){
        teamName="ENG";
    }else if(teamName.equals("Sri Lanka")){
        teamName="SL";
    }else if(teamName.equals("South Africa")){
        teamName="RSA";
    }
    return teamName;
}
3 个回复

您的getAcronym(String teamName)方法不执行任何空检查。 添加行:

if(teamName==null){
    return "";
} 

在开始检查字符串值之前,这应该可以缓解您的问题。

可能正在检查以查看为什么teamName被传递为null,如果它是故意的,那么这个解决方案将正常工作。 如果您应该始终通过发送有效的teamName,那么在您访问未正确分配的小部件之前,代码中会有某个位置。

此外,如果你的字符串不是常数,即它们可以想象为“英格兰”或“英格兰”,你应该进行比较,忽略大小写以捕捉这些情况。

 if(teamName.equalsIgnoreCase("Australia")){
    teamName="AUS";
 }

Bundle#getString(String key)如果找不到映射则返回null 请参阅文档

您可以使用getString(String key, String defaultValue) 方法,而不是在getAcronym(String teamName)检查null ,如果找不到映射,则允许您设置默认值。 例如:

team1name = extras.getString("team1name","");

getAcronym(String teamName) String比较中,您还可以反转比较以避免nullpointer。 这是一个很好的习惯:

if("Australia".equals(teamName)){

如果我正确理解您的代码,如果extras.getString(“team1name”)不存在,则会发生Nullpointer异常。 在调用getAcronym之前,您应该调试Project并确认team1name变量是否使用字符串设置。

(您是否正确定义了变量?String team1name =“”代码中的任何位置?)

3 空指针异常

我正在尝试使用逆向拟合,但未调用onResponse和onFailure。 我也没有任何例外。 我对做错地方感到困惑。 如果您能发现一些东西,将不胜感激。 更新-我在OnResponse方法中收到空指针异常。 网址-https: //jsonplaceholder.typico ...

4 空指针异常

我在两节课中有这段代码 找不到为什么我得到NullPointerException 。 我也想在主要方法中调用buildDataArray , printDataArray() , buildDateArray和printDateArray() 。 导入的TXT数据如下 ...

5 空指针异常

我正在尝试创建一个应用程序,该应用程序正在从数据库中获取数据并设置任务提醒,但是在调用获取NullPointerException的提醒功能时,我是Android新手,请帮助我。 log-cat和相关程序代码如下 logcat的 ReminderView。 java的 ...

2014-04-16 15:58:36 1 43   android
6 空指针异常

在NetBeans中编译我的应用程序并在Netbeans中运行该应用程序后,它就可以正常工作。 所有图像加载良好。 尝试双击执行该应用程序不会导致任何事情。 尝试从命令行运行会出现以下错误: 在Netbeans外部进行编译不会留下任何错误,并且可以正常执行。 经过 ...

7 空指针异常

我收到以下错误: 我的代码 这些是我使用过的 .xml,我不知道布局的问题,请帮助我,我只是在关注 udacity“开发 android 应用程序”上的视频,每个代码都像他们写的一样我不知道我这边有什么问题。 ...

8 空指针异常

我是StackOverFlow的新手。 我有多年使用Java的经验,但是似乎无法在此代码中找到触发Null指针异常的行。 导入均已准备就绪。 我不知道发生了什么事。 它只是飞过我的头。 错误: 如果有人可以帮助我,将不胜感激。 编辑第一次发布,因此格式有误。 类头没有 ...

9 空指针异常

我的问题只是一个空指针异常,但是,我不明白我是如何解决的。这是代码。 我正在尝试运行 primefaces 的聊天实用程序。 我正在使用 tomcat 7 .. 就我可以到达这里而言,但现在我遇到了这个问题。 .... .... 我得到 ChatView 类和这一行的异常if(us ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM