Как вызвать действие из класса, расширяющего ItemizedOverlay - PullRequest
0 голосов
/ 17 марта 2012

Мой основной класс является основным расширяет активность

с этим кодом вызова класса MiMapa:

switch(v.getId()){
        case R.id.presentLocation_button:
            Log.i("Button","Button 3 pushed");
            Intent m = new Intent(this, MiMapa.class);
            startActivity(m);
        break;  

отлично работает.

Класс MiMapa:

public class MiMapa extends MapActivity implements LocationListener {

У меня есть этот метод:

public void setOverlay1(){  
        int foodLength = foodItem.length;
        // Create itemizedOverlay2 if it doesn't exist and display all three items
        if(! foodIsDisplayed){
        mapOverlays = mapView.getOverlays();    
        drawable1 = this.getResources().getDrawable(R.drawable.golf); 
        itemizedOverlay1 = new Ofertas(drawable1); 
        // Display all three items at once
        for(int i=0; i<foodLength; i++){
            itemizedOverlay1.addOverlay(foodItem[i]);
        }
        mapOverlays.add(itemizedOverlay1);
        foodIsDisplayed = !foodIsDisplayed;
        // Remove each item successively with button clicks
        } else {            
            itemizedOverlay1.removeItem(itemizedOverlay1.size()-1);
            if((itemizedOverlay1.size() < 1))  foodIsDisplayed = false;
        }    
        // Added symbols will be displayed when map is redrawn so force redraw now
        mapView.postInvalidate(); 
    }

теперь проблема.

в класс Ofertas (открытый класс Ofertas расширяет ItemizedOverlay {)

в методе tap Мойкод:

protected boolean onTap(int i){
        GeoPoint  gpoint = myOverlays.get(i).getPoint();

        double lat = gpoint.getLatitudeE6()/1e6;
        double lon = gpoint.getLongitudeE6()/1e6;

        String toast = "Title: "+myOverlays.get(i).getTitle();
        toast += "\nText: "+myOverlays.get(i).getSnippet();
        toast +=    "\nSymbol coordinates: Lat = "+lat+" Lon = "+lon+" (microdegrees)";
        Toast.makeText(principal.context, toast, Toast.LENGTH_LONG).show();

        Intent intent = new Intent();
        intent.setClass(principal.context,Popup.class);
        principal.context.startActivity(intent);
        intent.putExtra("message", "My popup number " + mCount);
        mCount++;
        //startActivity(intent);
        return(true);
    }

, но не работает.Я пробовал intent.setClass (MiMapa.context, Popup.class);или intent.setClass (Principal.this, Popup.class);или intent.setClass (MiMapa.this, Popup.class);

Ничего не работает.

, пожалуйста, помогите мне.

спасибо

1 Ответ

0 голосов
/ 17 марта 2012

Передайте ваш Activity в ваш ItemizedOverlay (например, через конструктор) и используйте его для вашего startActivity() вызова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...