当前位置: 首页 > 知识库问答 >
问题:

在适配器中显示Android错误消息

闻枫
2023-03-14

我正试图让地图在我的Json适配器中工作。但不知何故,我总是收到错误信息:

JAVAlang.NullPointerException:尝试调用虚拟方法“void”。所容纳之物上下文空对象引用上的startActivity(android.content.Intent)

这是我的第二个Android项目,我找不到我的错误。我希望你们中的一些人能帮助我。

class  JSONAdapter extends BaseAdapter implements ListAdapter{

private final Activity activity;
private Context context;
private final JSONArray jsonArray;

JSONAdapter(Activity activity, JSONArray jsonArray) {
    assert activity != null;
    assert jsonArray != null;

    this.jsonArray = jsonArray;
    this.activity = activity;
}


@Override public int getCount() {
    if(null==jsonArray)
        return 0;
    else
        return jsonArray.length();
}

@Override public JSONObject getItem(int position) {
    if(null==jsonArray) return null;
    else
        return jsonArray.optJSONObject(position);
}

@Override public long getItemId(int position) {
    JSONObject jsonObject = getItem(position);

    return jsonObject.optLong("id");
}

@Override public View getView(int position, View convertView, ViewGroup parent) {
    if (convertView == null)
        convertView = activity.getLayoutInflater().inflate(R.layout.row, null);



    TextView tBrand =(TextView)convertView.findViewById(R.id.tvbrand);
    TextView tStreet =(TextView)convertView.findViewById(R.id.tvstreet);
    final TextView tPrice = (TextView)convertView.findViewById(R.id.tvprice);
    final TextView tPlace = (TextView)convertView.findViewById(R.id.tvplace);
    TextView tOpen = (TextView)convertView.findViewById(R.id.tvopen);



    JSONObject json_data = getItem(position);
    if(null!=json_data ) {
        String brand = null;
        String street = null;
        String price = null;
        String houseNumber = null;
        String place = null;
        String postCode = null;
        boolean open = false;
        Double statLng = null;
        Double statLat = null;

        try {
            brand = json_data.getString("brand");
            street = json_data.getString("street");
            price = Double.toString(json_data.getDouble("price"));
            houseNumber = json_data.getString("houseNumber");
            place = json_data.getString("place");
            postCode = json_data.getString("postCode");
            open = json_data.getBoolean("isOpen");
            statLng = json_data.getDouble("lng");
            statLat = json_data.getDouble("lat");

        } catch (JSONException e) {
            e.printStackTrace();
        }
        if (houseNumber.equals("null")) {
            houseNumber = "";
        }
        tBrand.setText(brand);
        tPrice.setText(price + "€");
        tStreet.setText(street + " " + houseNumber);
        tPlace.setText(postCode + " " + place);
        if (open == true) {
            tOpen.setText("geöffnet");
            tOpen.setTextColor(Color.GREEN);
        } else {
            tOpen.setText("geschlossen");
            tOpen.setTextColor(Color.RED);
        }


        final Double finalStatLng = statLng;
        final Double finalStatLat = statLat;
        tPrice.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Uri gmmIntentUri = Uri.parse("google.navigation:q=" + finalStatLat + "," + finalStatLng);
                Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
                mapIntent.setPackage("com.google.android.apps.maps");
                context.startActivity(mapIntent);

            }
        });

    }

    return convertView;
}

共有1个答案

丁正阳
2023-03-14

您没有给上下文赋值

上下文=活动;或使用activity.start活动(mapIntent);

 类似资料:
  • 变量'viewholder'、'position'&model'是从内部类访问的,它需要声明为final,但当我将其声明为final时,在适配器中显示错误。我正在使用Firebase 11.2.0请帮助我

  • 我正在尝试用spring显示一个报告PDF,我终于得到了它,但是问题出现在我的代码中有一个异常或错误的时候。在这种情况下,我想在我的应用程序中显示特殊的消息。sping控制器返回一个带有文件pdf的ResponseEntity和一个http状态代码。

  • 我已经使用fresco库加载适配器中的图像。但是图像并没有像我预期的那样设置正确。这是我的代码。请帮帮我.提前道谢。

  • 我为android编写应用程序,它将与GCM通信。我可以得到消息,但我想在屏幕上显示它,并得到错误。 有我的代码,我在行Activity act=(Activity)上下文中有问题; 我得到错误“这个类文件的JAR属于容器'Android dependencies',它不允许修改其条目上的源附件”

  • 当我将“CompilesDKVersion”Google Inc.:Google API:23“设置为SDK版本时,模块名称在android图标上有一个十字(x)符号。在运行配置对话框中,它显示错误,如“错误,请选择Android SDK”。由于该错误,应用程序没有启动。 但当我把“CompilesDKVersion23”设置为SDK版本时,一切都很好,而且应用程序也上线了。