【发布时间】:2015-08-17 13:46:21
【问题描述】:
好的。我已经看到了很多类似的问题,但可能我的问题太基本了(即愚蠢的 n00b 问题),以至于没有人费心去问。
我对 Android 编程还是很陌生,或者在“工业”能力中使用 Java(即不解决简单的 10 行课堂问题)。
我有一个带有嵌入式静态类的活动类:
package com.example.android.effectivenavigation;
•
•
•
public class MainActivity extends FragmentActivity implements ActionBar.TabListener {
•
•
•
public static class NonSwipeableViewPager extends ViewPager {
•
•
•
}
}
这来自本网站的一个样本。我正在尝试做的是将其简化为最基本的原子元素。
具体来说,我想在主活动文件中包含整个示例。
这是我的(非功能性)XML:
<com.example.android.effectivenavigation.MainActivity.NonSwipeableViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
现在,问题是当我在布局 XML 中指定 ViewPager 时,在解开 NonSwipeableViewPager 元素时会收到“ClassNotFoundException”。
如果我将 NonSwipeableViewPager 设置在一个单独的文件中并相当直接地引用它,它就可以正常工作。当它作为静态类嵌入到主活动类中时,我遇到了问题。
我显然在 XML 中使用了错误的命名空间。
谁能帮我找到要使用的正确命名空间?
谢谢!
【问题讨论】:
-
使其成为单个文件。
-
除了作为 StackOverflow 上的副本之外,以您正在做的方式将表示层 (Activity) 与视图层 (NonSwipeableViewPager) 混合是一种糟糕的编程方法。
-
@Budius 是的,我知道。但是,这不是我想要实际使用的东西。我正在学习,原来的例子有很多额外的“杂物”,我正在摆脱这些东西,以便专注于我想要的部分。我实际上是一个非常好的程序员(30 多年的经验)。我对封装的概念相当熟悉。搞定后我会写的代码会非常好。
-
这只是一个建议。我很高兴您了解正确封装的重要性。但是,请检查链接的问题,它显示了如何指向内部类。
-
@Budius 感谢您指出重复。我在学习 Android 时遇到的问题是 Android 数据的 SNR 很糟糕。差不多1.0。我收到了很多对我的查询的回复,几乎不可能把它整理出来。我敢肯定,随着我的进步,我会变得更好,但我还没有做到。