【问题标题】:android development if statement with images带有图像的android开发if语句
【发布时间】:2015-04-23 16:08:08
【问题描述】:

我正在尝试创建一个 if 语句,该语句通过“-1、0、1、2、3、4 和 5”检查餐厅的“评级”。然后我需要用图像替换评级数字。我已经尝试过这样做,但应用程序不断崩溃,应用程序在没有 if 语句的情况下工作正常,并显示 10 个最近的位置。这是代码:

JSONObject jo = (JSONObject) ja.get(i);
String name = jo.getString("BusinessName");
String rating = jo.getString("RatingValue");
String address1 = jo.getString("AddressLine1");
String address2 = jo.getString("AddressLine2");
String postcode = jo.getString("PostCode");

ImageSwitcher imageView = null;
if(rating.equalsIgnoreCase("-1")){
    imageView.setImageResource(R.drawable.rating0);
}else if(rating.equalsIgnoreCase("0")){
    imageView.setImageResource(R.drawable.rating0);
}else if(rating.equalsIgnoreCase("1")){
    imageView.setImageResource(R.drawable.rating0);
}else{
    //default case, if above all conditions will become false then this will call
}

【问题讨论】:

  • 显然它会崩溃,因为imageView 为空。使用findViewById(R.id.viewid); 初始化视图
  • 看看 Android Studio 对您发布的代码的评价:方法调用 'imageView.setImageResource(R.drawable.rating0)' 可能会产生 'java.lang.NullPointerException'

标签: android imageswitcher


【解决方案1】:

更新:

除了下面的代码,你还需要设置一个视图工厂,这样你的图片就可以被添加到某个东西上。

ImageSwitcher imageView = new ImageSwitcher(context);
imageView.setFactory(new ViewSwitcher.ViewFactory() {
        @Override
        public View makeView() {
            ImageView view = new ImageView(Location_assignment.this);
            return view;
        }
    });

然后把你的 if 语句放在这段代码下面。


您的图像切换器为空。您需要先实例化图像切换器,然后才能为其分配图像。

ImageSwitcher imageView = new ImageSwitcher(context);

【讨论】:

  • 哦,好吧,所以在(上下文)我需要将其更改为评级变量?因为它出现了一个错误@Zamereon
  • 您的上下文将是当时的上下文。如果你在一个activity中,就用this替换它,如果你在一个fragment中,用getActivity()替换它等等。
  • 我在我的 main_activity 中,当我将上下文更改为此时,它会出现错误。错误是:ImageSwitcher(ImageSwitcher中的android.content.Context不能应用于(android.location.LocationListener)@Zamereon
  • 使用整个类文件更新您的帖子。我猜应该是MainActivity.this
  • 查看帖子,'location_assignment.java'是整个类文件@zamereon
【解决方案2】:
ImageSwitcher imageView = null;

它是空的。

让它不为空。

【讨论】:

    【解决方案3】:

    你必须检查两件事:

    首先需要初始化imageView(因为它是null)。 这就是 AS 对您的代码所说的:

    方法调用 'imageView.setImageResource(R.drawable.rating0)' 可能会产生 'java.lang.NullPointerException'

    其次,检查变量“rating”是否不为空是个好主意,因为它来自 JSON。

    【讨论】:

    • 我怀疑 rating 是否为空,如果在 json 中找不到 RatingValue,那么它会抛出 JSON 异常。
    • 是的,但通常你会在抛出 JSON 异常之前处理这些问题(控制台日志、构建消息错误...)。
    • RatingValue 不为空。 JSON的所有结果都很好,只是当我试图将评级值转换为图像时它崩溃了,因为它是空的。
    • 好的,这是一个让你的代码更好的建议(答案的第二部分):D。接受更适合您的问题的答案:)
    • 谢谢你的建议,我已经解决了:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-16
    • 2015-12-07
    • 2012-01-27
    • 2016-08-15
    • 2014-10-26
    • 2018-02-20
    • 2018-09-27
    相关资源
    最近更新 更多