有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java获取IndexOutOfBundException Android

我正在从列表中的数据库中检索事件。我正在创造动态事件。我已将id设置为事件,并在列表中检索

我想获取将被点击的事件的数据。我试图检索值,但当我点击任何事件时,索引异常消失

以下是我获取数据的尝试:

public int tag;

private EventTableHelper db;
private EventData mEvent;

  if(editMode)//true
    {
        id = i.getIntExtra("tag", 0);
        List<EventData> eventList = db.getAllEvents(id);
        mEvent = eventList.get(id);
        title.setText(mEvent.getTitle());

        Toast.makeText(getApplicationContext(), String.valueOf(id),Toast.LENGTH_LONG).show();

        db.updateEvent(eventData);

        Toast.makeText(getApplicationContext(),"Edit mode",Toast.LENGTH_LONG).show();

    }

正在获取事件列表中的异常。获取(id)

编辑:

创建事件函数:

 for (EventData eventData : events) {

        String datefrom = eventData.getFromDate();

        if(datefrom != null) {
            String[] times = datefrom.substring(11, 16).split(":");
            minutesFrom = Integer.parseInt(times[0]) * 60 + Integer.parseInt(times[1]);
        }
        String dateTo = eventData.getToDate();

        String title = eventData.getTitle();
        String location = eventData.getLocation();


        if(dateTo != null) {

            String[] times1 = dateTo.substring(11, 16).split(":");
            minutesTo = Integer.parseInt(times1[0]) * 60 + Integer.parseInt(times1[1]);
        }
        tag ++;
        createEvent(inflater, dayplanView, minutesFrom, minutesTo,title,location);

    }

CreateEvent:

  private void createEvent(LayoutInflater inflater, ViewGroup dayplanView, int fromMinutes, int toMinutes, String title,String location) {
    final View eventView = inflater.inflate(R.layout.event_view, dayplanView, false);
    RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) eventView.getLayoutParams();

    RelativeLayout container = (RelativeLayout) eventView.findViewById(R.id.container);
    TextView tvTitle = (TextView) eventView.findViewById(R.id.textViewTitle);

    TextView showLocation = (TextView)eventView.findViewById(R.id.Location);
    TextView at = (TextView)eventView.findViewById(R.id.At);


    if (tvTitle.getParent() != null)
       ((ViewGroup) tvTitle.getParent()).removeView(tvTitle);
    tvTitle.setText(title);
    if (showLocation.getParent() != null)
       ((ViewGroup) showLocation.getParent()).removeView(showLocation);

    if (at.getParent() != null)
        ((ViewGroup) at.getParent()).removeView(at);

    if(location.equals(""))
    {
        showLocation.setVisibility(View.INVISIBLE);
        at.setVisibility(View.INVISIBLE);
    }

    else
    {
        showLocation.setVisibility(View.VISIBLE);
        at.setVisibility(View.VISIBLE);
        showLocation.setText(location);
    }

    int distance = (toMinutes - fromMinutes);

    layoutParams.topMargin = dpToPixels(fromMinutes + 9);
    layoutParams.height = dpToPixels(distance);

    eventView.setLayoutParams(layoutParams);
    dayplanView.addView(eventView);
    container.addView(tvTitle);
    container.addView(showLocation);
    container.addView(at);

    eventView.setTag(tag);

    eventView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            i = new Intent(getActivity(),AddEventActivity.class);
            editMode = true;
            i.putExtra("EditMode",editMode);

            v.getTag(tag);
            i.putExtra("tag",tag);
            startActivity(i);

        }
    });

}

我正在设置标签并将其从片段传递到活动

如何解决这个问题


共 (1) 个答案

  1. # 1 楼答案

    试着改变

    v.getTag(tag);

    进入

    int eventViewTag = (int) v.getTag();

    i.putExtra("tag",tag);

    进入

    i.putExtra("tag",eventViewTag);