开发者

launching mapview from main activity (button)

Going round in circles here i think.

I have an activity called Locate;

public class Locate extends Activity {

public static String lat;
public static String lon;
public static String number;

    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.locate);

    final Button buttonMaps = (Button) findViewById(R.id.ButtonMaps);
    buttonMa开发者_如何学Cps.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
         Toast.makeText(getBaseContext(), "Button Pressed", Toast.LENGTH_SHORT).show();


        try {
         Intent i = new Intent(getBaseContext(), displayMap.class);
         i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
         startActivity(i);
         }
         catch (ActivityNotFoundException e) {
          Toast.makeText(getBaseContext(), "Activity Not Found", Toast.LENGTH_SHORT).show(); 
         }



    }});

// Toast.makeText(getBaseContext(), "lat: " + lat + " long: " + lon + " from: " + testname, Toast.LENGTH_LONG).show();
}

If I make the displayMap class into a normal Activity, and just have display a toast message confirming it has loaded - then it works fine.

If i do this though;

public class displayMap extends MapActivity 
{    
/** Called when the activity is first created. */
public void onCreate()
{

    setContentView(R.layout.displaymap);
    Toast.makeText(getBaseContext(), "Display Map", Toast.LENGTH_SHORT).show();
}
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
}

Then as soon as I click the Button, I get a force close.

I have the correct 'uses-library' tag in my manifest;

<application android:icon="@drawable/icon" android:label="@string/app_name"> 
<uses-library android:name="com.google.android.maps" />

I don't get what it just force closes everytime i try and load it.

If I make this my onClick handler then it will fire up a working googlemaps/default mapview

        public void onClick(View v) {
         Toast.makeText(getBaseContext(), "Button Pressed", Toast.LENGTH_SHORT).show();

         Uri uri=Uri.parse("geo:"+Locate.lat+","+Locate.lon);
         StartActivity(new Intent(Intent.ACTION_VIEW, uri));
         }

But that is not what I am trying to do, I want my own - so that I can add overlays etc to it. But it does prove that the permission are set correctly and that the lib is there.

The logcat error when the app FCs is a Unexpected DEX error.

Can anyone point in the right direction here?


In your onCreate in your displayMap, you forgot to call the super class

public class displayMap extends MapActivity 
{    
/** Called when the activity is first created. */
public void onCreate()
{
    super.onCreate(icicle); /************* Line to add ********/
    setContentView(R.layout.displaymap);
    Toast.makeText(getBaseContext(), "Display Map", Toast.LENGTH_SHORT).show();
}

Also getBaseContext() is not recommended - Use getContext() or this

More in this stackoverflow post


Ok, i found the problem. For some reason I had google apis, and then the maps.jar listed on my buildpath / lib in eclipse. Cleaned it up and it's working as expected now.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜