Calling method of another class using contexts

10,574

It looks like I can do this like so:

UserHome userhome = (UserHome)context;
userhome.DisplayLocation();

where DisplayLocation() in the UserHome Activity. Simple.

Share:
10,574
consprice
Author by

consprice

Updated on June 05, 2022

Comments

  • consprice
    consprice about 2 years

    I have a custom titlebar with an ImageButton, which produces a dialogbox, and I want to be able to show location(place itemizedOverlay) on a map(in another class) when list item is selected from dialog box, and titlebar and map are in the same context. I read somewhere that I could call a method of another class using contexts. How can I do so?

    public class MyTitleBar extends RelativeLayout{
    
    private Context context;
    
    
    public MyTitleBar(Context context, AttributeSet attrs) {
        super(context, attrs);
        this.context = context;
    }
    
    @Override
    protected void onFinishInflate() {
    
        super.onFinishInflate();
    
        initViews();
    }
    
    // set up all the buttons  & clicks
    private void initViews() {
    
        final ImageButton listImgBtn = (ImageButton) findViewById(R.id.more);
        final CharSequence [] listItems = {"Elderly","Events"};
    
        listImgBtn.setOnClickListener(new  View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(context instanceof UserHome)
                {
                    AlertDialog.Builder builder = new AlertDialog.Builder(context);
                    builder.setTitle("List");
                    builder.setItems(listItems, new DialogInterface.OnClickListener() {
    
                    @Override
                    public void onClick(DialogInterface dialog, int item) {
                        // TODO Auto-generated method stub
                        if(item == 0)
                        {
                            //show location of elderly
                           //DisplayLocation()
    
                        }
                        else if(item == 1)
                        {
                            //show location of events
                        }
                    }
                });
                AlertDialog alert = builder.create();
                alert.show();
              }
            }
        });