2012-01-31 1 views
-1

Я как бы новый для этого программирования ежевики ... Я хочу сделать пользовательскую кнопку из растрового изображения и BitmapField, но когда я нажимаю на битмап-поле, он всегда показывает меню item first («open»), затем выполните метод run.Blackberry: как реализовать BitmapField как кнопка

Я хочу сделать его доступным для кликов, когда я клик на трекпаде, он выполнит метод запуска (непосредственно выполните метод run, не показывая «открытое» меню), но я не могу понять, как это сделать способ ...

это мой код:

private void createFields() 
{ 
    Bitmap atas = Bitmap.getBitmapResource("banerputih.png"); 
    add(new BitmapField(atas, Field.FIELD_HCENTER)); 

    //separator 
    add(new SeparatorField()); 
    Bitmap satu = Bitmap.getBitmapResource("wisata.png"); 
    Bitmap dua = Bitmap.getBitmapResource("trasport.png"); 
    Bitmap tiga = Bitmap.getBitmapResource("other.png"); 
    Bitmap empat = Bitmap.getBitmapResource("aboutme.png"); 
    Bitmap three = Bitmap.getBitmapResource("3.gif"); 
    add(new BitmapField(satu, Field.FOCUSABLE | Field.FIELD_HCENTER |Field.HIGHLIGHT_FOCUS)); 
    add(new BitmapField(dua, Field.FOCUSABLE | Field.FIELD_HCENTER | Field.HIGHLIGHT_FOCUS)); 
    add(new BitmapField(tiga, Field.FOCUSABLE | Field.FIELD_HCENTER | Field.HIGHLIGHT_FOCUS)); 
    add(new BitmapField(empat, Field.FOCUSABLE | Field.FIELD_HCENTER | Field.HIGHLIGHT_FOCUS)); 
    add(new SeparatorField()); 
    add(new BitmapField(three, Field.FIELD_HCENTER)); 
    add(new SeparatorField()); 

    //Disini ditambahin Gambar 
    //panjang 480 pixel 

} 

//menambahkan menu open TODO 
MenuItem _openAction = new MenuItem("Open",100000,10) 
{ 

    public void run() 
    { 
     getValue(); 

    } 

}; 

//menu about TODO 
MenuItem _AboutAction = new MenuItem("About",100,100) 
{ 
    public void run() 
    { 
     UiApplication.getUiApplication().pushScreen(new AboutScreen()); 
    } 
}; 

//method getValue(); 
protected void getValue() 
{ 
    Field f = getFieldWithFocus(); 
    if (f instanceof BitmapField) 

    { 
     BitmapField b = (BitmapField)f; 
     b.getIndex(); 
     //untuk cek index 
     //Dialog.alert(Integer.toString(b.getIndex())); 

     if (b.getIndex() == 2) 
     { 

      UiApplication.getUiApplication().pushScreen(new wisataScreen()); 
     } 
     else if (b.getIndex()== 3) 
     { 
      UiApplication.getUiApplication().pushScreen(new TransportScreen()); 
     } 
     else if (b.getIndex()== 4) 
     { 
      UiApplication.getUiApplication().pushScreen(new HotelScreen()); 

     }else if (b.getIndex()== 5) 
     { 
      UiApplication.getUiApplication().pushScreen(new AboutScreen()); 
     } 
    } 
} 

public void makeMenu(Menu m, int instance) 
{ 
    m.add(_openAction); 
    m.add(_AboutAction); 
    super.makeMenu(m, instance); 
} 

}

+0

Я видел ваш код это совершенно другое; см. эту ссылку Я опубликовал «Clickable Bitmap», который может вам помочь; http://stackoverflow.com/questions/9035987/calling-between-classes-in-blackberry-java/9059340#9059340 – alishaik786

+0

Вы должны искать, прежде чем задавать вопрос, я думаю. Попробуйте эту ссылку: http://stackoverflow.com/questions/6252335/bitmapfield-click-does-not-work-on-blackberry-application/6252788#6252788 –

+0

проверить мой ответ в этом вопросе-: http: // stackoverflow.com/questions/9035987/calling-between-classes-in-blackberry-java/9059340#9059340 – Signare

ответ

2

Вы не должны написать простой компонент, как на кнопочном поле растровых самостоятельно. RIM предоставил несколько хороших образцов, которые вы можете свободно включить, и они описаны here. Вы можете вытащить источник из GitHub, и единственное, что вам больше всего волнует, - это BitmapButtonField, которое расширяет BaseButtonField.

В общем, я бы также изменил вашу структуру в вашем примере кода, чтобы каждое поле кнопки/растрового изображения управляло своим собственным меню и обрабатывало клики, а не маршрутизацию родительского экрана, захватывая/маршрутизируя клики. Это позволит вам использовать элементы управления в чистоте.

Во-вторых, когда пользователь нажимает кнопку, вы не хотите, чтобы они отображали опцию «Запуск». Вы должны просто запустить действие согласно стандарту BB UX. Это поведение, которое вы увидите в образцах. Если вам действительно нужна возможность дать пользователю «двойной щелчок», то вы можете реализовать метод makeContextMenu в BaseButtonField.

+0

thaks man, я действительно не знаю, что я делаю, чтобы сделать BitmapButton и в конечном итоге писать код, как это, теперь я пытаюсь понять пример кода ... приветствия ... :) –

0

При создании ButtonField вы всегда должны указывать стиль ButtonField.CONSUME_CLICK. Если вы этого не сделаете, событие click будет передано на экран, и откроется меню, когда пользователь нажмет кнопку, хотя ваша кнопка все равно вызовет действие. , например:

ButtonField clearButton = new ButtonField("Clear", ButtonField.CONSUME_CLICK);

 Смежные вопросы

  • Нет связанных вопросов^_^