Android Community Forums - View Single Post - Dialog Information Retrieval
View Single Post
  #3  
Old 07-04-2009, 08:13 PM
aspekt9 aspekt9 is offline
aspekt9 is frustrated
Smoke signaler
 
Join Date: Jul 2009
Posts: 3
aspekt9 is on a distinguished road
Default Re: Dialog Information Retrieval

Okay so just an update, I figured out how to do this however I have a new problem...

I have an onTouch method that creates a new GeoPoint where the user touches the screen. It then opens a dialog box and asks them for a name for this GeoPoint. This method is shown below:

Code:
    @Override
    public boolean onTouchEvent(MotionEvent event, MapView mapView) {
        if(event.getAction() == MotionEvent.ACTION_DOWN) {
            if (add == true) {
                this.add = false;
                this.p = proj.fromPixels((int)event.getX(), (int)event.getY());
                LayoutInflater li = LayoutInflater.from(mContext);
                View view = li.inflate(R.layout.adddialog, null); 
                winAlert = new AlertDialog.Builder(mContext)
                    .setIcon(R.drawable.marker)
                    .setTitle("Add a new POI")
                    .setPositiveButton("Save", mOnClickListener)
                    .setNegativeButton("Cancel", mOnClickListener)
                    .setView(view);
                winDialog = winAlert.create();
                winDialog.show();
            }
        }
        return false;
    }
Now when the Save button is clicked, this method is called to add the point:

Code:
    OnClickListener mOnClickListener = new OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            // TODO Auto-generated method stub
            switch(which) {
            case -1:
                add_dialog_editText = (EditText) winDialog.findViewById(R.id.add_dialog_editText);
                addLocation(p, "Test", add_dialog_editText.getText().toString());
                break;
            case -2:
                dialog.cancel();
                return;
            }
        }
    };
My add location method looks like this:

Code:
    public void addLocation(GeoPoint p, String title, String desc) {
        OverlayItem overlayItem = new OverlayItem(p, title, desc);
        this.addOverlay(overlayItem);
        mapOverlays.add(this);
    }
Now my issue is that my points will not display on the map unless

1) I add an initial point in the constructor of this class
2) Even after I add an initial point in the constructor, the points don't show up until I touch the screen once more (anywhere).

I find if I comment out the dialog and put a static description the points show up immediately so there must be something in the Dialog that doesn't update until the user clicks the screen after the dialog has been closed? I really don't understand why this is behaving like this, can someone give me some help?
Reply With Quote