- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我关注了 Android tutorial for TabLayout ,我现在正尝试通过使用布局以及每个选项卡的 Activity 来修改它。不幸的是,在将 TabSpec 添加到我的 TabHost 时,我的应用程序崩溃并出现“资源 ID 无效”错误。
我认为这里的错误与 Dalvik 不理解我对选项卡布局 XML 文件的引用有关,但不明白为什么会这样。我尝试使用额外的 <include>
我的 main.xml 文件中的语句无济于事。非常欢迎任何帮助!
崩溃的 Java 代码:
public class TabLayoutActivity extends TabActivity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Resources res = getResources();
//mTabHost = getTabHost();
mTabHost = (TabHost) findViewById(android.R.id.tabhost);
mTabHost.setup();
TabHost.TabSpec spec;
Intent intent;
//Search tab
intent = new Intent(this, SearchActivity.class);
spec = mTabHost.newTabSpec("search_tab");
spec.setIndicator("Search", res.getDrawable(R.drawable.magnifyingglass));
spec.setContent(intent);
mTabHost.addTab(spec); //this line crashes
//Allergies tab - when the above tab is commented out, this tab adds successfully
intent = new Intent(this, AllergiesActivity.class);
spec = mTabHost.newTabSpec("allergies_tab")
.setIndicator("Allergies", res.getDrawable(R.drawable.man))
.setContent(intent);
mTabHost.addTab(spec);
mTabHost.setCurrentTab(0);
}
}
违规标签的 Activity :
public class SearchActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.id.search_tab_layout);
}
}
另一个(工作)选项卡的 Activity (注意未指定布局):
public class AllergiesActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView textView = new TextView(this);
textView.setText("Allergies");
setContentView(textView);
}
}
主.xml:
<?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:orientation="vertical">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TabWidget android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</TabWidget>
<FrameLayout android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
</FrameLayout>
</LinearLayout>
</TabHost>
search_tab.xml - 这是否没有以某种方式包含在内?
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/search_tab_layout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" xmlns:android1="http://schemas.android.com/apk/res/android">
</LinearLayout>
日志输出:
04-09 16:08:23.434: D/ddm-heap(532): Got feature list request
04-09 16:08:23.843: D/AndroidRuntime(532): Shutting down VM
04-09 16:08:23.843: W/dalvikvm(532): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
04-09 16:08:23.843: E/AndroidRuntime(532): Uncaught handler: thread main exiting due to uncaught exception
04-09 16:08:23.873: E/AndroidRuntime(532): java.lang.RuntimeException: Unable to start activity ComponentInfo{mattjackson.allergyassassin/mattjackson.allergyassassin.TabLayoutActivity}: java.lang.RuntimeException: Unable to start activity ComponentInfo{mattjackson.allergyassassin/mattjackson.allergyassassin.SearchActivity}: android.content.res.Resources$NotFoundException: Resource ID #0x7f050003 type #0x12 is not valid
04-09 16:08:23.873: E/AndroidRuntime(532): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
04-09 16:08:23.873: E/AndroidRuntime(532): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
04-09 16:08:23.873: E/AndroidRuntime(532): at android.app.ActivityThread.access$2200(ActivityThread.java:119)
04-09 16:08:23.873: E/AndroidRuntime(532): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
04-09 16:08:23.873: E/AndroidRuntime(532): at android.os.Handler.dispatchMessage(Handler.java:99)
04-09 16:08:23.873: E/AndroidRuntime(532): at android.os.Looper.loop(Looper.java:123)
04-09 16:08:23.873: E/AndroidRuntime(532): at android.app.ActivityThread.main(ActivityThread.java:4363)
04-09 16:08:23.873: E/AndroidRuntime(532): at java.lang.reflect.Method.invokeNative(Native Method)
04-09 16:08:23.873: E/AndroidRuntime(532): at java.lang.reflect.Method.invoke(Method.java:521)
04-09 16:08:23.873: E/AndroidRuntime(532): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
04-09 16:08:23.873: E/AndroidRuntime(532): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
04-09 16:08:23.873: E/AndroidRuntime(532): at dalvik.system.NativeStart.main(Native Method)
04-09 16:08:23.873: E/AndroidRuntime(532): Caused by: java.lang.RuntimeException: Unable to start activity ComponentInfo{mattjackson.allergyassassin/mattjackson.allergyassassin.SearchActivity}: android.content.res.Resources$NotFoundException: Resource ID #0x7f050003 type #0x12 is not valid
04-09 16:08:23.873: E/AndroidRuntime(532): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
04-09 16:08:23.873: E/AndroidRuntime(532): at android.app.ActivityThread.startActivityNow(ActivityThread.java:2335)
04-09 16:08:23.873: E/AndroidRuntime(532): at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:127)
04-09 16:08:23.873: E/AndroidRuntime(532): at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:339)
04-09 16:08:23.873: E/AndroidRuntime(532): at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:648)
04-09 16:08:23.873: E/AndroidRuntime(532): at android.widget.TabHost.setCurrentTab(TabHost.java:320)
04-09 16:08:23.873: E/AndroidRuntime(532): at android.widget.TabHost.addTab(TabHost.java:213)
04-09 16:08:23.873: E/AndroidRuntime(532): at mattjackson.allergyassassin.TabLayoutActivity.onCreate(TabLayoutActivity.java:31)
04-09 16:08:23.873: E/AndroidRuntime(532): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
04-09 16:08:23.873: E/AndroidRuntime(532): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
04-09 16:08:23.873: E/AndroidRuntime(532): ... 11 more
04-09 16:08:23.873: E/AndroidRuntime(532): Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f050003 type #0x12 is not valid
04-09 16:08:23.873: E/AndroidRuntime(532): at android.content.res.Resources.loadXmlResourceParser(Resources.java:1870)
04-09 16:08:23.873: E/AndroidRuntime(532): at android.content.res.Resources.getLayout(Resources.java:730)
04-09 16:08:23.873: E/AndroidRuntime(532): at android.view.LayoutInflater.inflate(LayoutInflater.java:318)
04-09 16:08:23.873: E/AndroidRuntime(532): at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
04-09 16:08:23.873: E/AndroidRuntime(532): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:198)
04-09 16:08:23.873: E/AndroidRuntime(532): at android.app.Activity.setContentView(Activity.java:1622)
04-09 16:08:23.873: E/AndroidRuntime(532): at mattjackson.allergyassassin.SearchActivity.onCreate(SearchActivity.java:11)
04-09 16:08:23.873: E/AndroidRuntime(532): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
04-09 16:08:23.873: E/AndroidRuntime(532): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
04-09 16:08:23.873: E/AndroidRuntime(532): ... 20 more
04-09 16:08:23.903: I/dalvikvm(532): threadid=7: reacting to signal 3
04-09 16:08:23.903: E/dalvikvm(532): Unable to open stack trace file '/data/anr/traces.txt': Permission denied
最佳答案
在您的 SearchActivity 中,您必须设置布局。您尝试将 View (来自您的布局)设置为您的 Activity 布局。而不是
setContentView(R.id.search_tab_layout);
做
setContentView(R.layout.search_tab);
关于将 TabSpec 添加到 TabHost 时 Android 应用程序崩溃 - "Resource ID not valid",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10075695/
我有 3 个标签包含不同的内容。他们从 Internet 加载内容。我使用 3 个 AsyncTasks 来完成它。一开始,3个tab显示3个ProgressBar。我希望每次完成一项任务时,它都会更
我的 Activity 布局之一中有一个 TabHost,有 4 个 TabSpec。我已将每个 TabSpec 的内容设置为不同的 LinearLayout,但只有第一个 TabSpec 实际显示
我有一个 fragment ,在其中,我声明了一个 FragmentTabHost。 public class ComFragment extends Fragment{ ... pr
我在 Fragment 中使用 TabHost 来创建标签。我遇到的问题是 TabSpec 的 setContent() .我需要设置它,以便它在 下嵌套另一个 fragment . 我是否使用 g
在 Android 应用程序(最小 sdk 11,目标 sdk 18)上,扩展 Fragment 的类应该创建带有一个标签和一个图标的 TabHost 选项卡 (TabSpec)。但是…… TabSp
我正在使用 TabHost 和 TabSpec。我想在单击 TabSpec 时执行一些操作(如 onClick)。有没有人试过这个我可以用“home.setIndicator(“Home”).....
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Tab
我正在尝试创建一个选项卡 UI,但我不想在 tabHosts 上放置任何图像,因此我决定使用 setIndicator(CharSequence 标签)而不是使用 setIndicator(CharS
我有一个使用选项卡的 android Activity 。 public class UnitActivity extends TabActivity { @Override public v
我正在尝试将我的 TabHost 中的选项卡内容设置为 RelativeLayout(在我的一个 XML 文件的顶层定义)。 我已经尝试通过使用 R.layout.lobby_tab 和 R.id.l
嗨 guyzz 我有 TabActivity 如下简单的代码 public class TabhostActivity extends Activity{ TabHost host;
我正在一个应用程序中实现选项卡式布局,其中垂直屏幕空间至关重要,因此我调整了 XML 布局中选项卡的高度。这些选项卡没有图标可绘制资源,它们有基本的文本标签。以编程方式设置 TabSpec 时,我正在
我有包含 TabHost 的主要 Activity 。 在 TabHost 中,我有几个 TabSpec,它们使用 Intent 作为选项卡的内容。 在我的代码中的某些点,我需要从 TabHost 中
我关注了 Android tutorial for TabLayout ,我现在正尝试通过使用布局以及每个选项卡的 Activity 来修改它。不幸的是,在将 TabSpec 添加到我的 TabHos
我需要为 TabHost 的指标使用我的自定义 View 。使用 Android API 级别 >=4 没问题,但在 Android API 级别 <4 中,此方法未实现。有什么建议吗? 我正在考虑实
我是一名优秀的程序员,十分优秀!