Rince Thomas
Rince Thomas

Reputation: 4158

Blackberry ad-banner click

How to add click event in blackberry banner ad.
Here is my code:

public class DemonstrationScreen extends MainScreen 
{  
    public DemonstrationScreen()
    {
      final Bitmap customPlaceholder = Bitmap.getBitmapResource("arrow.png");
      Banner bannerAd = new Banner(add.APID,null,10000, customPlaceholder);
      bannerAd.setMMASize(Banner.MMA_SIZE_EXTRA_LARGE);
      VerticalFieldManager vfm = new VerticalFieldManager
                                 (VerticalFieldManager.NO_VERTICAL_SCROLL
                                 | VerticalFieldManager.NO_VERTICAL_SCROLLBAR
                                 | VerticalFieldManager.USE_ALL_WIDTH);
      HorizontalFieldManager hfm = new HorizontalFieldManager
                                 (HorizontalFieldManager.FIELD_HCENTER
                                 | HorizontalFieldManager.FIELD_VCENTER);
      hfm.add(bannerAd);
      vfm.add(hfm);
      add(vfm);

      FieldChangeListener listener=new FieldChangeListener() {
            public void fieldChanged(Field field, int context) {

                if(field==bannerAd){
                    Dialog.alert("Banner clicked");
                }
            }};
            bannerAd.setChangeListener(listener);

    }  
}

this is not working. when i click the ad, then its not showing anythig.

Upvotes: 0

Views: 447

Answers (1)

Vit Khudenko
Vit Khudenko

Reputation: 28418

I do think this is unexpected/improper usage of Banner.

However you could potentially do this by overriding navigationClick() at Banner:

public class DemonstrationScreen extends MainScreen 
{  
    public DemonstrationScreen()
    {
      final Bitmap customPlaceholder = Bitmap.getBitmapResource("arrow.png");
      Banner bannerAd = new Banner(add.APID,null,10000, customPlaceholder) {
          protected boolean navigationClick(int status, int time) {
              Dialog.alert("Banner clicked");
              return super.navigationClick(status, time);
          }
      };
      bannerAd.setMMASize(Banner.MMA_SIZE_EXTRA_LARGE);
      VerticalFieldManager vfm = new VerticalFieldManager
                                 (VerticalFieldManager.NO_VERTICAL_SCROLL
                                 | VerticalFieldManager.NO_VERTICAL_SCROLLBAR
                                 | VerticalFieldManager.USE_ALL_WIDTH);
      HorizontalFieldManager hfm = new HorizontalFieldManager
                                 (HorizontalFieldManager.FIELD_HCENTER
                                 | HorizontalFieldManager.FIELD_VCENTER);
      hfm.add(bannerAd);
      vfm.add(hfm);
      add(vfm);
    }  
}

But since RIM made Banner class final you can not do this. So I think your request has no simple solution. A hard solution would be to "figure out" what field is clicked at the MainScreen level (in navigationClick of MainScreen you can check what field is in focus and do smth).

Upvotes: 1

Related Questions