1
所以我寫了這個簡單的選項卡導航。它有兩個名爲「片段1」和「片段2」的選項卡。如果您點擊了其中一個,則應在內容區域中顯示相應的文本「片段1」或「片段2」。我的代碼在開始時工作正常。錯誤在改變方向時的動作欄選項卡
但是,當我將設備改變爲橫向時,文字混亂了。它在同一個地方顯示1和2組合的片段。我認爲這兩個文本正在同時顯示。文本保持這種方式,我嘗試在發生此錯誤後更改選項卡。當我從風景改變爲肖像時,也會發生這種情況。這是什麼造成的?
MainActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActionBar ab = getActionBar();
ab.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
Tab tab = ab.newTab().setText(R.string.frag1).setTabListener(new MyTabListener(this, Fragment1.class.getName()));
ab.addTab(tab);
tab = ab.newTab().setText(R.string.frag2).setTabListener(new MyTabListener(this, Fragment2.class.getName()));
ab.addTab(tab);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
private class MyTabListener implements ActionBar.TabListener
{
private Fragment mFragment;
private final Activity mActivity;
private final String mFragName;
public MyTabListener(Activity activity, String fragName) {
mActivity = activity;
mFragName = fragName;
}
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
mFragment = Fragment.instantiate(mActivity, mFragName);
ft.add(android.R.id.content, mFragment);
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
ft.remove(mFragment);
mFragment = null;
}
}
Fragment1.java
public class Fragment1 extends Fragment
{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstance)
{
return inflater.inflate(R.layout.frag1, container, false);
}
}
Fragment2.java
public class Fragment2 extends Fragment
{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstance)
{
return inflater.inflate(R.layout.frag2, container, false);
}
}
甜!謝謝你的幫助! –