【问题标题】:Starting new activity onClick开始新活动 onClick
【发布时间】:2013-01-01 14:54:30
【问题描述】:

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

我在主活动中添加了一个注册 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

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

【问题讨论】:

  • Caused by: java.lang.NullPointerException at us.picbox.RegisterActivity.onCreate(RegisterActivity.java:85)问题从RegisterActivity的第85行开始。贴上RegisterActivity的onCreate()方法,并指出哪一行是85。
  • 你在 manifest 中声明了 RegisterActivity 吗?
  • 在清单中声明一个活动.. !!
  • 我知道问题出在哪里,这是第 85 行: findViewById(R.id.sign_in_button).setOnClickListener( new View.OnClickListener() { @Override public void onClick(View view) { attemptLogin( ); } });但这在布局上不存在。

标签: android android-intent


【解决方案1】:

我知道问题出在哪里了,这是第 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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-31
    相关资源
    最近更新 更多