Processingに基づいてAndroidアプリを開発しています
メニュー ボタンが押されたときに、いくつかのコンテンツを含む 2 つの固定タブを表示したいと思います。
Tab1 にはいくつかの設定が含まれ、ヘルプ ボタン
Tab2 には、プリセットのリストを表示するための ListView が必要です。簡単にするために、2 つの TextView を作成しようとしています。KetaiList のKetai
ライブラリのアプローチを試してい
ます。そのため、アプリケーションによって拡張された PApplet クラス内に TabHost を拡張する内部クラスがあります。
public class MyProcessingApp extends PApplet {
public void setup() {
}
public void draw() {
}
public void keyPressed() {
if (key == CODED) {
if (keyCode == KeyEvent.KEYCODE_MENU) {
TabHost th = new GBTab(this);
}
}
}
public class GBTab extends TabHost {
private PApplet parent;
TabHost self;
TabWidget tab1, tab2;
LinearLayout layout;
public GBTab(PApplet _parent) {
super(_parent.getApplicationContext());
parent = _parent;
init();
}
public void init() {
println("GBTab init");
self = this;
layout = new LinearLayout(parent);
TabSpec settingsSpec = self.newTabSpec("SETTINGS").setContent(
new TabContentFactory() {
public View createTabContent(String tag) {
TextView tv = new TextView(parent);
tv.setText("SETTINGS!");
return tv;
}
}
)
.setIndicator("SETTINGS");
self.addTab(settingsSpec);
TabSpec presetsSpec = self.newTabSpec("PRESETS").setContent(
new TabContentFactory() {
public View createTabContent(String tag) {
TextView tv = new TextView(parent);
tv.setText("PRESETS!");
return tv;
}
}
)
.setIndicator("PRESETS");
self.addTab(presetsSpec);
self.setCurrentTab(0);
parent.runOnUiThread(new Runnable() {
public void run() {
parent.addContentView(self, new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.FILL_PARENT));
}
}
);
}
}
}
このコードは、TabHost にタブを追加するときに NullPointerException を返します。
self.addTab(settingsSpec);
self が null であるためです。
これは有効なアプローチですか?
ありがとうございました