【问题标题】:Android SDK Fragment SupportAndroid SDK 片段支持
【发布时间】:2012-01-15 02:31:04
【问题描述】:

好的,我现在才刚刚开始接触 Android 编程,我正在学习 android“TabActivity”教程:http://developer.android.com/reference/android/app/TabActivity.html。 一切正常,但似乎找不到某些支持类,请参阅下面生成错误的代码。

    mTabManager.addTab(mTabHost.newTabSpec("simple").setIndicator("Simple"),
            FragmentStackSupport.CountingFragment.class, null);
    mTabManager.addTab(mTabHost.newTabSpec("contacts").setIndicator("Contacts"),
            LoaderCursorSupport.CursorLoaderListFragment.class, null);
    mTabManager.addTab(mTabHost.newTabSpec("custom").setIndicator("Custom"), 
            LoaderCustomSupport.AppListFragment.class, null);
    mTabManager.addTab(mTabHost.newTabSpec("throttle").setIndicator("Throttle"),
            LoaderThrottleSupport.ThrottledLoaderListFragment.class,null);

对于 FragmentStackSupport/LoaderCursorSupport/LoaderCustomSupport/LoaderThrottleSupport,它表示所有这些都无法解析为一种类型。我已将最新的支持库添加到名为“libs”的根目录中的文件夹中,并将其复制到“C:/Eclipse/v4/”目录中。我的导入文件是:

    import java.util.HashMap;
    import android.R;
    import android.content.Context;
    import android.os.Bundle;
    import android.support.v4.app.Fragment;
    import android.support.v4.app.FragmentActivity;
    import android.support.v4.app.FragmentTransaction;
    import android.support.v4.app.FragmentPagerAdapter;
    import android.view.View;
    import android.widget.TabHost;
    import cowdawg.hello_tab.namespace.R.layout;
    import cowdawg.hello_tab.namespace.R.id;

有人可以就如何解决这个问题给我一些建议,谢谢:)。

【问题讨论】:

    标签: android eclipse android-fragments android-tabactivity


    【解决方案1】:

    这可能是因为以下类不是标准 Android API(或支持库)的一部分,而仅存在于 support demos 示例代码中用于演示目的:

    FragmentStackSupport.CountingFragment
    LoaderCursorSupport.CursorLoaderListFragment
    LoaderCustomSupport.AppListFragment
    LoaderThrottleSupport.ThrottledLoaderListFragment
    

    您需要将这些类添加到您自己的项目中才能使用它们。 Here您可以在“文件”小节下找到源文件。

    【讨论】:

    • 感谢 MH,这是迄今为止最有帮助的评论,但我仍然遇到一些问题。我下载了这些 java 文件,当我的其他代码存在时,将它们复制到我的 src 文件目录中。他们显示了一些错误(无法找到某些函数),所以我注释掉了我不需要的类并且有错误,但是当使用这些文件中引用的任何内容时它会产生运行时错误。我应该将这些java文件添加到我的项目中吗?我没想到这会这么难。
    • 获取完整源代码可能是最简单的方法,以防止丢失任何实体,例如布局和其他资源。您可以在 SDK 安装的子文件夹中找到完整的示例项目,更具体地说:[path-to-sdk]\extras\android\compatibility\v4。缺少函数也可能表明您的构建目标低于示例文件的要求,尽管我怀疑这里的情况。
    • 谢谢 MH,我找到了文件并复制了布局文件和内容(必须将实际文件复制到我的“src”文件中,否则找不到类,这正常吗?? )。无论如何,现在要解决如何修改这些选项卡的棘手任务:)。
    • 如果它没有出现在默认的 android 库中,那么我认为不值得这么麻烦。我会寻找另一种原生支持的方式。
    • 它们是示例片段活动。如果您不想通过 Android SDK 管理器获取整个支持库(包括示例),您可以将它们替换为您自己的简单片段活动。出于测试目的,您的简单片段活动可以像扩展 FragmentActivity 并实现将内容视图设置为任何内容的 onCreate 一样简单。最终,无论如何你都会用对你真实片段活动的引用来替换它们。
    【解决方案2】:

    在 Eclipse IDE 上:选择您的项目,然后右键单击该项目 -> Android 工具 -> 添加支持库。

    所需的支持库将添加到您的项目构建路径中。您将在 Java 构建路径 -> 库选项卡 -> Android 依赖项下找到此库 jar。

    享受探索!

    【讨论】:

      【解决方案3】:

      您是否已将该库添加到您的构建路径中?在eclipse中右键jar -> Build Path -> Add to Build Path.

      【讨论】:

      • 感谢 Joakim,但是是的,我已经将它添加到构建路径中。就在那时我实际上将其删除并将其重新添加到构建路径中无济于事。我也右键单击该项目并单击“添加兼容性库”,但没有成功。
      【解决方案4】:

      尝试通过右键单击项目并打开属性窗口来添加

      【讨论】:

        【解决方案5】:

        您可以通过继承Fragment 类(或其子类,如DialogFragmentListFragment 等)来创建自己的类,而不是这些缺失的类。更多信息由 Android here 提供。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-07-08
          • 2012-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多