私は無知に見えるかもしれませんが、BlackBerry アプリケーションの開発に関する問題を解決する方法についての情報はあまり見つかりませんでした。
基本的に、いくつかの画像ボタンを含む UI を作成しました。私がやりたいのは、ボタンの1つをクリックすると、画面の中央にある画像がシームレスに別の画像に切り替わることです。
私は現在、スレッドを使用していませんが、収集したものから必要ですか?
それとも、ボタン リスナーで新しい画面をプッシュし、クラスのコンストラクターを呼び出して、別の画像でページを再構築する必要がありますか?
これが不明確な場合は申し訳ありませんが、これを行う方法に関する基本的な情報、またはブラックベリーのページ更新を詳細に説明するリンクをいただければ幸いです!
どうもありがとう
編集:さて、ここに私のコードの非常に小さな部分があります:
これは基本的に、リスナーで最後に試したことです。2 つのボタンのいずれかを押したときに画像 (flagField) を変更する方法がわかりません。私にとってうまくいったのは pushScreen(new Csps("americanflag")); だけでした。ボタンを押すたびに、パフォーマンスが悪く、理想的ではない画面のスタックが残っていました.
私は一日中これをやろうとしてきました... ため息、ここに行きます:
public class CSP extends UiApplication
{
public static void main(String[] args)
{
CSP theApp = new CSP();
theApp.enterEventDispatcher();
}
public CSP()
{
CSPS csps = new CSPS();
pushScreen(csps);
}
}
class CSPS extends MainScreen implements FieldChangeListener
{
int width = Display.getWidth();
int height = Display.getHeight();
ButtonField backButton;
ImageButtonField canadianFlag;
ImageButtonField americanFlag;
Bitmap changeableFlag;
String currentFlag ="canada_flag.png";
BitmapField flagField;
canadianFlag = construct("canada_flag.png", 0.18);
americanFlag = construct("us.gif", 0.18);
canadianFlag.setChangeListener(this);
americanFlag.setChangeListener(this);
add(flagField);
add(canadianFlag);
add(americanFlag);
//LISTENERS
public void fieldChanged(Field field, int context){
if(field == canadianFlag){
setCurrentFlagResource("canada_flag.png");
BitmapField newFlagField = populateFlagField(currentFlag, 0.3);
replace(flagField, newFlagField);
this.invalidate();
this.doPaint();
this.updateDisplay();
}
else if(field == americanFlag){
setCurrentFlagResource("american-flag.gif");
BitmapField newFlagField = populateFlagField(currentFlag, 0.3);
replace(flagField, newFlagField);
this.invalidate();
this.doPaint();
this.updateDisplay();
}
setCurrentFlagRessource メソッドは、flagField 属性を適切な BitmapField に設定します。