Я использую пользовательский TabWidget для отображения моих вкладок. Закладки прекрасно работают, когда я запускаю программу. Все выглядит красиво. Однако, когда я перезагружаю программу и, в соответствии с logcat, метод onResume() вызывается в моем виджетах вкладок, TabWidget отображает только верхнюю часть виджета. Вот XML для моего TabWidget.Tab Виджет не отображается правильно onResume()
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_above="@android:id/tabs"/>
<TabWidget
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="55dp"
android:layout_alignParentBottom="true" />
</RelativeLayout>
</TabHost>
Это довольно простой ванильный материал здесь. Изменение layout_height не помогает.
Я в настоящее время не реализую onResume в моей TabWidget.java. Но все равно код.
public class TabWidget extends TabActivity {
private TabHost mTabHost;
private void setupTabHost() {
mTabHost = (TabHost) findViewById(android.R.id.tabhost);
mTabHost.setup();
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.tabs);
Resources res = getResources(); // Resource object to get Drawables
TabHost tabHost = (TabHost) findViewById(android.R.id.tabhost); // The
// activity
// TabHost
TabHost.TabSpec spec; // Resusable TabSpec for each tab
Intent intent; // Reusable Intent for each tab
setupTabHost();
// mTabHost.getTabWidget().setDividerDrawable(R.drawable.tab_divider);
// Dealer tab
Intent intentDealer = new Intent().setClass(this, DealerActivity.class);
int iconDealer = (R.drawable.ic_tab_dealer);
setupTab("Dealer", intentDealer, iconDealer);
// Department tab
Intent intentDept = new Intent().setClass(this, DeptActivity.class);
int iconDept = R.drawable.ic_tab_dept;
setupTab("Departments", intentDept, iconDept);
// PostBoard Activity
Intent intentBoard = new Intent().setClass(this, BoardActivity.class);
int iconBoard = R.drawable.ic_tab_board;
setupTab("Postboard", intentBoard, iconBoard);
// Social Network connection
// Check first to see if there are Social Network links if not don't
// show tab.
if (Startup.msMain.locations[Startup.nChosenLocation].social_media_feeds.length == 0) {
} else {
Intent intentSocial = new Intent().setClass(this,
SocialActivity.class);
int iconSocial = R.drawable.ic_tab_social;
setupTab("Social Media", intentSocial, iconSocial);
}
// Links Activity
Intent intentLinks = new Intent().setClass(this, LinksActivity.class);
int iconLinks = R.drawable.ic_tab_link;
setupTab("Links", intentLinks, iconLinks);
// set startup tab
tabHost.setCurrentTab(0);
}
private void setupTab(final String tag, Intent intent, int img) {
View tabview = createTabView(mTabHost.getContext(), tag, img);
TabSpec setContent = mTabHost.newTabSpec(tag).setIndicator(tabview)
.setContent(intent);
mTabHost.addTab(setContent);
}
private static View createTabView(final Context context, final String text,
int img) {
View view = LayoutInflater.from(context)
.inflate(R.layout.tabs_bg, null);
TextView tv = (TextView) view.findViewById(R.id.tabsText);
tv.setText(text);
ImageView icon = (ImageView) view.findViewById(R.id.tabsIcon);
icon.setBackgroundDrawable(context.getResources().getDrawable(img));
return view;
}
}
И для тщательности здесь мой логарифм, когда появляется ошибка.
12-28 10:10:00.963: I/ActivityManager(1305): Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.zocalolabs.demo/.SplashScreen } from pid 1470
12-28 10:10:01.034: W/InputManagerService(1305): Starting input on non-focused client [email protected] (uid=10001 pid=1470)
12-28 10:10:01.073: I/ActivityManager(1305): Resumed Activity: com.zocalolabs.demo/.TabWidget totalTime: 110 ms
Есть ли способ, чтобы заставить мой виджет активности перерисовывать на onResume() или OnPause() заставить его полностью на убить активность, таким образом, заставляя его метода OnCreate снова? Или есть другой способ атаковать эту проблему? Спасибо за любые идеи!
Так что, я полагаю, у меня нет очков для ответа на мой собственный вопрос, но оказалось, что виновник был – Rymnel
на самом деле, если вы нашли ответ на свою собственную проблему, это хорошая практика, чтобы ответить на собственный вопрос, а затем выбрать его как правильный ответ. Не стесняйтесь! Таким образом, если кто-то найдет ваш вопрос/ответ полезным, они могут проголосовать за вас и дать вам кредит. http://meta.stackexchange.com/questions/12513/should-i-not-answer-my-own-questions – Aurora
Спасибо. Я пошел вперед и перешел к ответу. – Rymnel