0

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 であるためです。
これは有効なアプローチですか?

ありがとうございました

4

1 に答える 1

1

この中で2番目の回答(24票)はどうですか?基本的に、タブアクティビティを使用していないため、self.setup(); を呼び出す必要があると書かれています。タブを追加する前に

于 2013-08-01T00:06:34.823 に答える