1

首先,我对 android 非常陌生,我对此了解不多。我正在尝试使用它,我现在正在关注本教程: http ://www.androidhive.info/2011/08/android-标签布局教程/

我创建了一个类如下

package com.example.tabbedactivity;

import android.app.TabActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.widget.TabHost;
import android.widget.TabHost.TabSpec;

public class TabbedActivity extends TabActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_tabbed);

        TabHost tabHost = getTabHost();

        // Tab for Photos
        TabSpec photospec = tabHost.newTabSpec("Photos");
        // setting Title and Icon for the Tab
        photospec.setIndicator("Photos", getResources().getDrawable(R.drawable.icon_photos_tab));
        Intent photosIntent = new Intent(this, PhotosActivity.class);
        photospec.setContent(photosIntent);

        // Tab for Songs
        TabSpec songspec = tabHost.newTabSpec("Songs");
        songspec.setIndicator("Songs", getResources().getDrawable(R.drawable.icon_songs_tab));
        Intent songsIntent = new Intent(this, SongsActivity.class);
        songspec.setContent(songsIntent);

        // Tab for Videos
        TabSpec videospec = tabHost.newTabSpec("Videos");
        videospec.setIndicator("Videos", getResources().getDrawable(R.drawable.icon_videos_tab));
        Intent videosIntent = new Intent(this, VideosActivity.class);
        videospec.setContent(videosIntent);

        // Adding all TabSpec to TabHost
        tabHost.addTab(photospec); // Adding photos tab
        tabHost.addTab(songspec); // Adding songs tab
        tabHost.addTab(videospec); // Adding videos ta
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_tabbed, menu);
        return true;
    }

}

因此我在drawable下制作了三个xml文件,如下所示icon_photos_tab.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- When selected, use grey -->
    <item android:drawable="@drawable/photo-hover"
          android:state_selected="true" />
    <!-- When not selected, use white-->
    <item android:drawable="@drawable/photo-unhover" />
</selector>

icon_songs_tab.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- When selected, use grey -->
    <item android:drawable="@drawable/music-hover"
          android:state_selected="true" />
    <!-- When not selected, use white-->
    <item android:drawable="@drawable/music-unhover" />
</selector>

icon_videos_tab.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- When selected, use grey -->
    <item android:drawable="@drawable/video-hover"
          android:state_selected="true" />
    <!-- When not selected, use white-->
    <item android:drawable="@drawable/video-unhover" />
</selector>

现在,当我尝试在 drawable 下访问这些 xml 文件时 IDE 出现问题,这正是下面显示的代码行,它们是 TabbedActivity.java 的一部分(我在上面显示的类)

TabSpec songspec = tabHost.newTabSpec("Songs");
            songspec.setIndicator("Songs", getResources().getDrawable(R.drawable.icon_songs_tab));


TabSpec photospec = tabHost.newTabSpec("Photos");
            // setting Title and Icon for the Tab
            photospec.setIndicator("Photos", getResources().getDrawable(R.drawable.icon_photos_tab));


TabSpec videospec = tabHost.newTabSpec("Videos");
            videospec.setIndicator("Videos", getResources().getDrawable(R.drawable.icon_videos_tab));

错误说

此行有多个标记 - icon_photos_tab 无法解析或不是字段 - R.drawable 无法解析为变量

究竟可能是什么问题。(我对android真的很陌生。这有点像我的第一个应用程序,我还没有经过任何理论)

更新我在控制台上收到以下错误

[2013-01-12 12:32:02 - TabbedActivity] res\drawable-ldpi\video-hover.png: Invalid file name: must contain only [a-z0-9_.]
[2013-01-12 12:32:02 - TabbedActivity] res\drawable-mdpi\video-hover.png: Invalid file name: must contain only [a-z0-9_.]
[2013-01-12 12:32:02 - TabbedActivity] res\drawable-xhdpi\video-hover.png: Invalid file name: must contain only [a-z0-9_.]
[2013-01-12 12:32:02 - TabbedActivity] res\drawable-hdpi\video-unhover.png: Invalid file name: must contain only [a-z0-9_.]
[2013-01-12 12:32:02 - TabbedActivity] res\drawable-ldpi\video-unhover.png: Invalid file name: must contain only [a-z0-9_.]
[2013-01-12 12:32:02 - TabbedActivity] res\drawable-mdpi\video-unhover.png: Invalid file name: must contain only [a-z0-9_.]
[2013-01-12 12:32:02 - TabbedActivity] res\drawable-xhdpi\video-unhover.png: Invalid file name: must contain only [a-z0-9_.]
4

6 回答 6

1

我认为文件的名称正在造成问题。将 photo-hover 和 photo-unhover 的名称更改为 photo_hover 和 photo_unhover ,看看它是否有效......

于 2013-01-12T07:04:36.523 回答
1

android 资源文件名不应包含'-'或大写字母。上面的错误表明文件名包含'-'字符。所以改变'-'as under score '_'。像这样更改您的可绘制图像文件。

于 2013-01-12T08:24:01.937 回答
1

聆听您的错误!

我并不是说听起来粗鲁,但问题出在你打开的窗户外面的一个肥皂盒上,上面有一个扬声器:

res\drawable-xhdpi\video-unhover.png:文件名无效:必须仅包含 [a-z0-9_.]

必须只包含 [a-z0-9_.] ,这告诉您XML 文件名中只允许小写字符az、数字09_和字符。.您的文件名中有一个连字符-

于 2013-01-12T08:31:11.690 回答
0

在我看来,您正在尝试引用不存在的资源 (icon_photos_tab)。您需要在可绘制文件夹中使用该名称的资源(XML 可绘制或 PNG 或其他东西)。

祝你好运。

于 2013-01-12T06:41:19.093 回答
0

此错误背后的原因是您的某些 xml 文件中存在错误。

检查您的 res/ 文件夹,以确保其中包含的每个文件都没有错误。它会导致错误。

于 2013-01-12T06:42:06.250 回答
0

您确定已将 XML 文件放在 /res/drawable 文件夹下吗?清理和重建项目也可能有所帮助。

于 2013-01-12T06:43:31.090 回答