处理PApplet上的Android固定标签

时间:2013-07-31 17:41:26

标签: android user-interface tabs processing

我正在开发基于Processing

的Android应用

我想在按下菜单按钮时显示两个带有一些内容的固定标签 Tab1将包含一些设置,可能还有一个帮助按钮
Tab2应该有一个ListView来显示预设列表。 现在我试图创建两个TextViews以简化。
我正在尝试使用Ketai库的方法KetaiList 所以有一个内部类在我的应用程序扩展的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 这是一种有效的方法吗?

谢谢

1 个答案:

答案 0 :(得分:1)

this中的第二个答案(24票)怎么样?基本上它说,因为你没有使用tabactivity你需要调用self.setup();在添加任何标签之前