我在单独的类中定义了一个 ViewFlipper。它看起来像这样:
public class Flipper extends Activity {
public ViewFlipper view_flipper;
/* Constructor */
public Flipper(int flipper_id) {
view_flipper = (ViewFlipper) findViewById(flipper_id);
}
...
然后在另一个 Activity 的 onCreate()
方法中,我将像这样实例化 Flipper:
private Flipper flipper;
flipper = new Flipper(R.id.login_screen_flipper);
但是,我在 Flipper 的构造函数中得到了一个 NullPointerException
。当我调试时,我看到 flipper_id
有一个有效的 id。我做错了什么?
最佳答案
您不能像这样创建 Activity 。
要创建 Activity ,您必须使用 Intents 来完成.您必须在 XML 文件中定义布局并使用 setContentView(R.layout.layout_name); 附加它;
看看这个开始学习:https://developer.android.com/training/index.html
更新:
好的,目前还不清楚您使用问题信息完成了什么。
如果您要扩展 ViewFlipper 的行为,我建议您扩展它:
package your.package;
public class MyFlipper extends ViewFlipper {
// ...
}
然后像这样在你的 xml 中使用它:
<your.package.ViewFlipper
[...] parameters [...] />
最后,当你实现它时,你可以这样做:
public class YourActivity extends Activity {
public ViewFlipper viewFlipper;
@Override
protected void onCreate (Bundle savedInstanceState) {
viewFlipper = (ViewFlipper) findViewById(R.id.login_screen_flipper);
}
// ... more activity stuff
}
PS:使用 lowerCamelCase 是个好习惯Java 成员变量(或 Java 中的字段)中的表示法
关于Android findViewById 抛出 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8581299/