Я пытаюсь добавить поле карты в своем приложении Blackberry, но получаю исключение при навигации по этому экрану, говоря, что IllegalArgumentException (битмап слишком велик). Есть идеи?Отображение MapField внутри приложения throws IllegalArgumentException Растровое изображение слишком большое исключение
Код:
package com.quadrazol.bb.fpg.screens.maps;
import net.rim.device.api.lbs.maps.ui.MapField;
import net.rim.device.api.lbs.maps.model.MapDataModel;
import net.rim.device.api.lbs.maps.model.MapLocation;
import net.rim.device.api.lbs.maps.model.Mappable;
import net.rim.device.api.system.Display;
import net.rim.device.api.ui.Color;
import net.rim.device.api.ui.Graphics;
import net.rim.device.api.ui.component.SeparatorField;
import net.rim.device.api.ui.container.VerticalFieldManager;
import com.quadrazol.bb.fpg.screens.TabScreen;
import com.quadrazol.bb.fpg.util.DataHelper;
import com.quadrazol.bb.fpg.util.UIHelper;
public class FindAPlannerScreen extends TabScreen {
private MapField basicMapField;
public FindAPlannerScreen() {
super();
VerticalFieldManager mgr = new VerticalFieldManager(
VerticalFieldManager.USE_ALL_HEIGHT
| VerticalFieldManager.USE_ALL_WIDTH
| VerticalFieldManager.NO_VERTICAL_SCROLL) {
public void paint(Graphics graphics) {
graphics.setBackgroundColor(Color.BLACK);
graphics.clear();
super.paint(graphics);
}
};
add(mgr);
mgr.add(UIHelper.generateHeader());
mgr.add(new SeparatorField() {
public void paint(Graphics graphics) {
graphics.setColor(Color.WHITE);
super.paint(graphics);
}
});
VerticalFieldManager mainScrollView = UIHelper.generateMainScrollView();
basicMapField = new MapField(mainScrollView.getWidth()-6,(int) (mainScrollView.getHeight()*.90));
MapDataModel model = basicMapField.getModel();
Mappable[] plannerDetails = DataHelper.fetchPlannerDetails();
if (plannerDetails != null) {
model.addAll(plannerDetails);
}
mainScrollView.add(basicMapField);
mgr.add(mainScrollView);
mgr.add(UIHelper.generateTabBarForScreen(UIHelper.TAB_MAP));
}
}
Исключение:
[0.0] ViewEngine$RenderingEngine:unknown exception occured, IllegalArgumentException(Bitmap is too large)
[0.0] IllegalArgumentException
[0.0] Bitmap is too large
[0.0] net_rim_cldc-10(4C48DD41)
[0.0] Bitmap
[0.0] <init>
[0.0] 0x8778
[0.0] net_rim_cldc-10(4C48DD41)
[0.0] Bitmap
[0.0] <init>
[0.0] 0x8628
[0.0] net_rim_cldc-10(4C48DD41)
[0.0] Bitmap
[0.0] <init>
[0.0] 0x8609
[0.0] net_rim_cldc-10(4C48DD41)
[0.0] Bitmap
[0.0] <init>
[0.0] 0x85ED
[0.0] net_rim_cldc-10(4C48DD41)
[0.0] Bitmap
[0.0] <init>
[0.0] 0x859E
[0.0] net_rim_bb_maps_api-4(4C48E231)
[0.0] ViewEngine
[0.0] generateContext
[0.0] 0x6457
[0.0] net_rim_bb_maps_api-4(4C48E231)
[0.0] ViewEngine$RenderingEngine
[0.0] <private>
[0.0] 0x65F2
[0.0] net_rim_bb_maps_api-4(4C48E231)
[0.0] ViewEngine$RenderingEngine
[0.0] run
[0.0] 0x6507
PS: Я также путать между использованием net.rim.device.api.lbs.maps.ui.MapField
и net.rim.device.api.lbs.MapField
Update:
Я попытался, как в вашей предложение, но все же оно бросает ту же ошибку , Я заметил одну странную вещь. Обновленный код выглядит следующим образом:
int displayWidth = Display.getWidth();
int displayHeight = Display.getHeight();
basicMapField = new MapField(displayWidth/2, displayHeight/2);
System.out.println("Display Dimen:"+displayHeight+" "+displayWidth);
System.out.println("Map Dimen:"+basicMapField.getHeight()+" "+basicMapField.getWidth());
Но в журналах я не вижу установленных параметров. Журналы показывает:
[0.0] Display Dimen:480 360
[0.0] Map Dimen:0 0
Я пытался в соответствии с вашим предложением, но все же бросает HTE же ошибка –
Затем на основе кода, публикуемую я не знаю, что предложить. Кстати, поскольку вы находитесь в конструкторе экрана, бессмысленно называть любой из 'Field.getHeight()', 'Field.getWidth()' на этом этапе. См. Мой другой пост об этом - http://stackoverflow.com/questions/5368139/how-get-height-of-title-screen-on-blackberry-screen/5368626#5368626 –