【发布时间】:2015-01-20 15:26:44
【问题描述】:
我只想在屏幕上包含 SwipedTabs。所以我像这样在没有 TabListeners 的情况下编写代码,
`
package com.example.swipetabexample;
import android.app.ActionBar;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
public class MainActivity extends FragmentActivity
{
ActionBar ab;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ab = getActionBar();
ActionBar.Tab at= ab.newTab();
at.setText("Tab1");
ab.addTab(at);
}
}
<android.support.v4.view.ViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/pager"
android:layout_height="match_parent"
android:layout_width="match_parent">
</android.support.v4.view.ViewPager>`
当我运行这段代码时,我发现总是错误。但我一次又一次地检查,但我找不到问题所在。我发现很多博客他们也实现了这样的滑动标签,但带有 TabListener 的片段。 但首先,我只想看到屏幕上的选项卡。 这里我给出Logcat中显示的错误
01-20 14:52:12.264: E/AndroidRuntime(1233): FATAL EXCEPTION: main
01-20 14:52:12.264:E/AndroidRuntime(1233):进程:com.example.swipetabexample,PID:1233 01-20 14:52:12.264: E/AndroidRuntime(1233): java.lang.RuntimeException: 无法启动活动 ComponentInfo{com.example.swipetabexample/com.example.swipetabexample.MainActivity}: java.lang.IllegalStateException: Action Bar Tab 必须有一个回调 01-20 14:52:12.264: E/AndroidRuntime(1233): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195) 01-20 14:52:12.264: E/AndroidRuntime(1233): 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 01-20 14:52:12.264: E/AndroidRuntime(1233): 在 android.app.ActivityThread.access$800(ActivityThread.java:135) 01-20 14:52:12.264: E/AndroidRuntime(1233): 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 01-20 14:52:12.264: E/AndroidRuntime(1233): 在 android.os.Handler.dispatchMessage(Handler.java:102) 01-20 14:52:12.264: E/AndroidRuntime(1233): 在 android.os.Looper.loop(Looper.java:136) 01-20 14:52:12.264: E/AndroidRuntime(1233): 在 android.app.ActivityThread.main(ActivityThread.java:5017) 01-20 14:52:12.264: E/AndroidRuntime(1233): 在 java.lang.reflect.Method.invokeNative(Native Method) 01-20 14:52:12.264: E/AndroidRuntime(1233): 在 java.lang.reflect.Method.invoke(Method.java:515) 01-20 14:52:12.264: E/AndroidRuntime(1233): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 01-20 14:52:12.264: E/AndroidRuntime(1233): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 01-20 14:52:12.264: E/AndroidRuntime(1233): at dalvik.system.NativeStart.main(Native Method) 01-20 14:52:12.264:E/AndroidRuntime(1233):原因:java.lang.IllegalStateException:操作栏选项卡必须有回调 01-20 14:52:12.264: E/AndroidRuntime(1233): 在 com.android.internal.app.ActionBarImpl.configureTab(ActionBarImpl.java:478) 01-20 14:52:12.264: E/AndroidRuntime(1233): 在 com.android.internal.app.ActionBarImpl.addTab(ActionBarImpl.java:504) 01-20 14:52:12.264: E/AndroidRuntime(1233): 在 com.android.internal.app.ActionBarImpl.addTab(ActionBarImpl.java:492) 01-20 14:52:12.264: E/AndroidRuntime(1233): 在 com.example.swipetabexample.MainActivity.onCreate(MainActivity.java:25) 01-20 14:52:12.264: E/AndroidRuntime(1233): 在 android.app.Activity.performCreate(Activity.java:5231) 01-20 14:52:12.264: E/AndroidRuntime(1233): 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 01-20 14:52:12.264: E/AndroidRuntime(1233): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159) 01-20 14:52:12.264: E/AndroidRuntime(1233): ... 11 更多 01-20 16:59:43.564: D/dalvikvm(1368): GC_FOR_ALLOC 释放 77K,5% 释放 3415K/3568K,暂停 26ms,共 26ms 01-20 16:59:43.572: D/dalvikvm(1368): GC_FOR_ALLOC 释放 3K, 5% 释放 3633K/3792K, 暂停 2ms, 共 5ms 01-20 16:59:43.592:I/dalvikvm-heap(1368):将堆(碎片情况)增加到 6.039MB,分配 2536932 字节 01-20 16:59:43.600: D/dalvikvm(1368): GC_FOR_ALLOC 释放
【问题讨论】:
-
你到底遇到了什么错误?
-
是的,当在模拟器上运行程序时,它说,“不幸的是,SwipeTabexample 停止工作”,而 Logcat 中显示的其他错误在上面的帖子中。
标签: android eclipse android-fragments