0

我正在开发一个基于Processing的 Android 应用程序

我想在按下菜单按钮时显示两个带有一些内容的固定选项卡。
Tab1 将包含一些设置,也许帮助按钮 T
​​ab2 应该有一个 ListView 来显示预设列表。现在,为了简单起见,我正在尝试创建两个 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 为空。
这是一种有效的方法吗?

谢谢

4

1 回答 1

1

第二个答案(24 票)怎么样从本质上讲,由于您没有使用 tabactivity,因此您需要调用 self.setup(); 在添加任何选项卡之前

于 2013-08-01T00:06:34.823 回答