0

I am a noob to android and I have a Map Activity that also uses OverlayItems. Within the onButtonTap method of my overlay class, I want to execute startActivity so i can then use intent.ACTION_CALL.

Intent callIntent = new Intent(Intent.ACTION_CALL);   
callIntent.setData(Uri.parse("tel:"+MapActivity.phonenumber0));
startActivity(callIntent);

in the code above i am asked to create a method for startActivity(Intent), which I don't understand. and when i try...

Intent callIntent = new Intent(Intent.ACTION_CALL);   
callIntent.setData(Uri.parse("tel:"+MapActivity.phonenumber0));
MapActivity.startActivity(callIntent);

It says i cannot make a static reference to a non static reference to a non-static method. And when I try to use the context of the object, which is the button being tapped it won't allow me to do so.

Intent callIntent = new Intent(Intent.ACTION_CALL);   
callIntent.setData(Uri.parse("tel:"+MapActivity.phonenumber0));
ContextObj.startActivity(callIntent);

And of course moving this block of code to the main Activity requires a static method which presents its own set of issues.

How can set the appropriate context for startActivity? Any help is greatly appreciated.

B. Money
  • 931
  • 2
  • 19
  • 56

3 Answers3

6

you can create method in your MapActivity class like this to get context...

Edit : Take some static variable like this...

public static Context mContext;

In Activity's onCreate() method assign base context to it...

mContext = getBaseContext();

& return mContext...

public static Context getContext() {
    return mContext;
}

& call it in to your non activity class to start activity...

Intent callIntent = new Intent(Intent.ACTION_CALL);   
callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
callIntent.setData(Uri.parse("tel:"+MapActivity.phonenumber0));
MapActivity.getContext().startActivity(callIntent);
Priyank Patel
  • 12,244
  • 8
  • 65
  • 85
1

Try this before start the activity set this flag :

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

Hope it will work.

Piyush Agarwal
  • 25,608
  • 8
  • 98
  • 111
0

You can pass the context of the activity (Map Activity) to your class and then use it..

Nermeen
  • 15,883
  • 5
  • 59
  • 72
  • in the constructor of the other class..if you provide more code i can help – Nermeen Sep 07 '12 at 14:06
  • public class MapActivity extends MapActivity implements View.OnClickListener, OnItemSelectedListener, LocationListener, OnCheckedChangeListener.. is all i have for the other class. Do I create a public class for startActivity? – B. Money Sep 07 '12 at 14:13