在onClick上开始新的活动

时间:2013-01-01 06:44:14

标签: android android-intent

我正在为我的网络服务开发一个Android应用程序。

我在主要活动中添加了一个注册TextView,并为onClickListener添加了这段代码:

mRegister.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View view) {
     startActivity(new Intent(LoginActivity.this, RegisterActivity.class));
  }
});

单击寄存器TextView时,会在logcat中返回此错误:

01-01 01:36:29.443: E/AndroidRuntime(21558): FATAL EXCEPTION: main
01-01 01:36:29.443: E/AndroidRuntime(21558): java.lang.RuntimeException: Unable to start activity ComponentInfo{us.picbox/us.picbox.RegisterActivity}: java.lang.NullPointerException
01-01 01:36:29.443: E/AndroidRuntime(21558):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1830)
01-01 01:36:29.443: E/AndroidRuntime(21558):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1851)
01-01 01:36:29.443: E/AndroidRuntime(21558):    at android.app.ActivityThread.access$1500(ActivityThread.java:132)
01-01 01:36:29.443: E/AndroidRuntime(21558):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1038)
01-01 01:36:29.443: E/AndroidRuntime(21558):    at android.os.Handler.dispatchMessage(Handler.java:99)
01-01 01:36:29.443: E/AndroidRuntime(21558):    at android.os.Looper.loop(Looper.java:150)
01-01 01:36:29.443: E/AndroidRuntime(21558):    at android.app.ActivityThread.main(ActivityThread.java:4293)
01-01 01:36:29.443: E/AndroidRuntime(21558):    at java.lang.reflect.Method.invokeNative(Native Method)
01-01 01:36:29.443: E/AndroidRuntime(21558):    at java.lang.reflect.Method.invoke(Method.java:507)
01-01 01:36:29.443: E/AndroidRuntime(21558):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
01-01 01:36:29.443: E/AndroidRuntime(21558):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
01-01 01:36:29.443: E/AndroidRuntime(21558):    at dalvik.system.NativeStart.main(Native Method)
01-01 01:36:29.443: E/AndroidRuntime(21558): Caused by: java.lang.NullPointerException
01-01 01:36:29.443: E/AndroidRuntime(21558):    at us.picbox.RegisterActivity.onCreate(RegisterActivity.java:85)
01-01 01:36:29.443: E/AndroidRuntime(21558):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1072)
01-01 01:36:29.443: E/AndroidRuntime(21558):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1794)
01-01 01:36:29.443: E/AndroidRuntime(21558):    ... 11 more

有人能解释一下这个问题吗?

1 个答案:

答案 0 :(得分:3)

  

我知道问题出在哪里,这是第85行:

findViewById(R.id.sign_in_button).setOnClickListener(new View.OnClickListener() {
    @Override 
    public void onClick(View view) { 
        attemptLogin(); 
    } 
}); 
     

但这在布局上是不存在的。

findViewById()找不到当前未显示的视图。 必须在视图层次结构中包含android:id="@+id/sign_in_button"的视图,否则findViewById()将返回null并导致此NullPointerException。