好吧,这让我疯了 - 我搜索了所有可以找到的参考文献和例子,我似乎仍然遗漏了一些非常明显的东西.这些是7天电视指南的标签(通常不带红色箭头,显然:) :)
我需要知道的是构成Tab本身主体/背景的对象(我认为是View还是Drawable)是什么?(如红色箭头所示)以及如何访问它或让它自动将其状态颜色更改为我选择的列表?另外,如何让指标TextView的状态颜色跟随呢?
示例:在上面的捕获中,它是可读的,因为我已将textColor设置为静态灰色(而不是在所选选项卡上消失的亮白色).但我想让它自动变为白色标签上的黑色文字(选中)和黑色的明亮白色文字(未选中).
感谢所有的帮助.
这不是重复的我如何使用片段,现在不推荐使用TabActivity?
经过一些研究后得出的结论是,TabActivity已被弃用,因为我们现在必须使用片段.到目前为止,我读到的原因是,使用操作栏可以更好地处理片段,并且通过支持兼容性库,它也可以从Android 2.1开始实现
但我仍然不明白它被弃用的原因.为什么不让动作栏也适用于活动?为什么片段更喜欢?
我也看过片段有更好的表现......是什么原因?
活动至少是清晰的分离实体,这是积极的.我现在对片段没有足够的洞察力来理解为什么它们更好.
提前致谢...
我有一个名为MyTabActivity的TabActivity,其中包含我使用此代码创建的几个选项卡:
public class MyTabActivity extends TabActivity {
public void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.my_tabs);
tabHost = (TabHost)findViewById(android.R.id.tabhost);
tabHost.getTabWidget().setDividerDrawable(R.drawable.tab_divider);
Intent intent = new Intent().setClass(this, MyTab1.class);
setupTab(new TextView(this), "Tab1", intent);
intent = new Intent().setClass(this, MyTab2.class);
setupTab(new TextView(this), "Tab2", intent);
intent = new Intent().setClass(this, MyTab3.class);
setupTab(new TextView(this), "Tab3", intent);
}
private void setupTab(final View view, final String tag, Intent intent) {
View tabview = createTabView(tabHost.getContext(), tag);
TabHost.TabSpec setContent = tabHost.newTabSpec(tag).setIndicator(tabview).setContent(intent);
tabHost.addTab(setContent);
}
private static View createTabView(final Context context, final String text) {
View view …
Run Code Online (Sandbox Code Playgroud) 例外
05-12 15:42:45.791 11043-11043/ E/UncaughtException: java.lang.RuntimeException: android.os.TransactionTooLargeException: data parcel size 631792 bytes
at android.app.ActivityThread$StopInfo.run(ActivityThread.java:3776)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6123)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757)
Caused by: android.os.TransactionTooLargeException: data parcel size 631792 bytes
at android.os.BinderProxy.transactNative(Native Method)
at android.os.BinderProxy.transact(Binder.java:615)
at android.app.ActivityManagerProxy.activityStopped(ActivityManagerNative.java:3700)
at android.app.ActivityThread$StopInfo.run(ActivityThread.java:3768)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6123)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757)
05-12 15:42:47.247 11043-11043/ E/AndroidRuntime: FATAL EXCEPTION: main
Process: , PID: 11043
java.lang.RuntimeException: android.os.TransactionTooLargeException: data parcel size 631792 bytes
at …
Run Code Online (Sandbox Code Playgroud) android fragment tabactivity runtimeexception android-viewpager
我有一个带有两个选项卡的TabActivity.活动的布局如下:
<?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">
<LinearLayout android:orientation="vertical"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:padding="5dp">
<TabWidget android:id="@android:id/tabs"
android:layout_width="fill_parent" android:layout_height="wrap_content" />
<FrameLayout android:id="@android:id/tabcontent"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:padding="5dp">
<ListView android:id="@+id/list"
android:layout_width="fill_parent" android:layout_height="fill_parent" />
</FrameLayout>
</LinearLayout>
</TabHost>
Run Code Online (Sandbox Code Playgroud)
布局由ListView组成,ListView在setOnTabChangedListener()中相应地填充.填写列表并显示它没有问题.
我的问题是活动开始时列表视图没有显示,虽然我通过ID找到它并填充它; 它仅在我更改选项卡后填充.
并且onCreate(..)中的代码如下所示:
l = (ListView) findViewById(R.id.list);
l.setAdapter(new CommentsAdapter(this, (JSONArray) obj));
TabSpec spec;
spec = tabHost.newTabSpec("0").setIndicator("0",
res.getDrawable(R.drawable.tab_recent)).setContent(
R.id.list);
tabHost.addTab(spec);
spec = tabHost.newTabSpec("1").setIndicator("1",
res.getDrawable(R.drawable.tab_pop)).setContent(
R.id.list);
tabHost.addTab(spec);
tabHost.setOnTabChangedListener(new OnTabChangeListener() {
@Override
public void onTabChanged(String tabId) {
// TODO Auto-generated method stub
int tab = Integer.valueOf(tabId);
showDialog(WAIT_DIALOG);
switch (tab) { …
Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我有一个TabActivity,我在其中使用One Activity,它有两个片段.两个片段都有选项菜单.但这些Optionss菜单没有显示在Action Bar中.我还把菜单中的项目放到"showAsAction"中.
好吧,即时通讯发展与应用的API 8 TabActivity但是今天我发现," 这个类是过时了. "
那么我们应该从现在开始使用FragmentActivity来实现标签?但是当我想要展示listview
活动时呢?我必须使用ListFragment(但这是"自::API级别11")
任何人都可以看到,我很困惑如何继续前进.
如果有人可以提供关于这个问题,选项卡,片段和任何其他有用的建议(AsyncTaskLoader仅用于api11?)的好的和清晰的概念,那将是很棒的.
顺便说一句,我正在阅读,fragment
因为api 1可以使用,但现在我找不到.请帮忙 :(
编辑:只需重新更改标题cuz ListFragment未被弃用.如果我不想这样做,请抱歉新来的:D
你好,我很难改变片段活动的视觉观点.我创建了所有选项卡但是onClick我不知道如何将活动传递到该空白区域.
http://i40.tinypic.com/22bwxx.png
所以这个结构是一个名为的简单活动Main
,它只是将内容视图设置为一个maintabholder.xml
文档,该文档包含片段视图,该视图连接到一个名为MainNav
其内容视图包含底部所有选项卡的类.
maintabholder.xml
:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<include layout="@layout/header" android:layout_alignParentTop="true" android:id="@+id/headerArea"></include>
<fragment
class="my.package.name.MainNav"
android:id="@+id/fragment_tabs"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
MainNav.java code snippet
:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState)
{
mRoot = inflater.inflate(R.layout.fragment_tabs, null);
mTabHost = (TabHost) mRoot.findViewById(android.R.id.tabhost);
setupTabs();
return mRoot;
}
Run Code Online (Sandbox Code Playgroud)
和R.layout.fragment_tabs:
<?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"
android:background="#EFEFEF">
<RelativeLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TabWidget
android:id="@android:id/tabs"
android:layout_alignParentBottom="true"
android:layout_width="fill_parent"
android:background="@drawable/tab_background"
android:gravity="center_horizontal"
android:layout_height="wrap_content" >
</TabWidget>
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="wrap_content"> …
Run Code Online (Sandbox Code Playgroud) 我的应用程序的主要Activity是TabActivity,它包含一个OptionsMenu.我定义了一些其他活动(进入选项卡),我想在每个活动中定义一个菜单,并将其菜单与主菜单合并.可能吗?
我需要在我的应用程序中实现TabHost中的嵌套活动.我使用这样的ActivityGroup类:
public class CustomActivityGroup extends ActivityGroup {
View rootView;
public static CustomActivityGroup group;
private ArrayList<View> history;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.history = new ArrayList<View>(); group = this;
View view = getLocalActivityManager().startActivity("LoginActivity", new Intent(this,RegisterActivity.class) .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))
.getDecorView();
replaceView(view);
}
@Override
protected void onResume() {
super.onResume();
this.history = new ArrayList<View>();
group = this;
}
public void replaceView(View v) {
if (history.size() == 0) {
if (rootView != null) {
history.add(rootView);
rootView = null;
}
}
history.add(v);
setContentView(v);
}
public void …
Run Code Online (Sandbox Code Playgroud)