このコードを使用して n 個のタブを作成します。
TabHost tabs = (TabHost)findViewById(R.id.tabhost);
tabs.setup(mLocalActivityManager);
StateListDrawable[] drawables = new StateListDrawable[hotel.categoryArray.length];
for (int i = 0; i < hotel.categoryArray.length; i++){
TabSpec spec1 = tabs.newTabSpec(hotel.categoryArray[i]);
Intent intent = new Intent(this, ListViewActivity.class);
Bundle b = new Bundle();
b.putParcelableArrayList("Businesses", createArray(hotel.categoryArray[i], hotel.explore));
intent.putExtras(b);
spec1.setContent(intent);
TextView tab1 = new TextView(this);
tab1.setText(hotel.categoryArray[i]);
tab1.setGravity(android.view.Gravity.CENTER);
tab1.setTextSize(14.0f);
tab1.setTextColor(text);
drawables[i] = new StateListDrawable();
drawables[i].addState(selected, new ColorDrawable(selectedColor));
drawables[i].addState(unselected, new ColorDrawable(defaultColor));
tab1.setBackgroundDrawable(drawables[i]);
spec1.setIndicator(tab1);
tabs.addTab(spec1);
}
tabs.setCurrentTab(0);
これが私の ListViewActivity です。オブジェクトの ArrayList を取得し、カスタムの MyCustomBaseAdapter を使用して、正常に動作しているように見えるリストを作成します。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list);
Bundle bundle = this.getIntent().getExtras();
ArrayList<Business> business = null;
if(bundle!=null) {
business = bundle.getParcelableArrayList("Businesses");
}
final ListView lv1 = getListView();
lv1.setAdapter(new MyCustomBaseAdapter(this, business));
lv1.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
Object o = lv1.getItemAtPosition(position);
Business fullObject = (Business)o;
Toast.makeText(ListViewActivity.this, "You have chosen: " + " " + fullObject.name, Toast.LENGTH_LONG).show();
}
});
}
問題は、タブに値が入力され、新しいタブを押すたびにフィールドに問題なく値が入力されることですが、前のタブに戻っても元に戻らず、コンテンツが残ります。また、それは奇妙な方法でそれを行います.2番目のタブから1番目に移動せず、3番目から2番目にうまく切り替わります.4番目に移動すると、その内容はすべてのタブに残ります.
リストにデータを入力し、「アドホック」タブを持つ1つのクラスを持つために、問題または代替ソリューションをどこで探すべきですか?