Android java.lang.RuntimeException:无法实例化活动组件信息。。。java.lang.NullPointerException
由于某些原因,每次尝试启动应用程序时,我都会遇到以下错误:Android java.lang.RuntimeException:无法实例化活动组件信息。。。java.lang.NullPointerException,android,nullpointerexception,Android,Nullpointerexception,由于某些原因,每次尝试启动应用程序时,我都会遇到以下错误: Unable to instantiate activity ComponentInfo{com.example.lifeahead/com.example.lifeahead.MainActivity}:java.lang.NullPointerException 我检查了清单文件,所有活动都已添加 启动应用程序时,我使用的唯一方法是: private void logIn(){ Button logIn = (Button
Unable to instantiate activity ComponentInfo{com.example.lifeahead/com.example.lifeahead.MainActivity}:java.lang.NullPointerException
我检查了清单文件,所有活动都已添加
启动应用程序时,我使用的唯一方法是:
private void logIn(){
Button logIn = (Button) findViewById(R.id.login);
logIn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent loginIntent = new Intent(MainActivity.this, HomeActivity.class);
loginIntent.putExtra("cmUN", cmUN);
loginIntent.putExtra("cmPW", cmPW);
startActivity(loginIntent);
}
});
}
以下是onCreate:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
}
logIn();
}
完整日志:
E
/AndroidRuntime(1607):致命异常:main
E/AndroidRuntime(1607):进程:com.example.lifeaward,PID:1607
E/AndroidRuntime(1607):java.lang.RuntimeException:无法实例化活动组件信息{com.example.lifeaward/com.example.lifeaward.MainActivity}:java.lang.NullPointerException
E/AndroidRuntime(1607):位于android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2121)
E/AndroidRuntime(1607):位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
E/AndroidRuntime(1607):位于android.app.ActivityThread.access$800(ActivityThread.java:135)
E/AndroidRuntime(1607):位于android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
E/AndroidRuntime(1607):位于android.os.Handler.dispatchMessage(Handler.java:102)
E/AndroidRuntime(1607):位于android.os.Looper.loop(Looper.java:136)
E/AndroidRuntime(1607):位于android.app.ActivityThread.main(ActivityThread.java:5017)
E/AndroidRuntime(1607):位于java.lang.reflect.Method.Invokenactive(本机方法)
E/AndroidRuntime(1607):位于java.lang.reflect.Method.invoke(Method.java:515)
E/AndroidRuntime(1607):位于com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
E/AndroidRuntime(1607):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
E/AndroidRuntime(1607):位于dalvik.system.NativeStart.main(本机方法)
E/AndroidRuntime(1607):由以下原因引起:java.lang.NullPointerException
E/AndroidRuntime(1607):位于android.app.Activity.findviewbyd(Activity.java:1884)
E/AndroidRuntime(1607):位于com.example.lifeaward.MainActivity。(MainActivity.java:22)
E/AndroidRuntime(1607):位于java.lang.Class.newInstanceImpl(本机方法)
E/AndroidRuntime(1607):位于java.lang.Class.newInstance(Class.java:1208)
E/AndroidRuntime(1607):在android.app.Instrumentation.newActivity(Instrumentation.java:1061)上
E/AndroidRuntime(1607):位于android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2112)
E/AndroidRuntime(1607):。。。还有11个
我感谢所有能得到的帮助 stacktrace告诉你
Button logIn = (Button) findViewById(R.id.login);
findViewById
返回的对象为空,因为您唯一的方法是logIn()
。findViewById
返回null的唯一原因是,您正在查找不属于当前活动的视图层次结构的视图您在活动获取窗口之前调用了findViewById()
。您应该在setContentView(R.layout.activity\u main)之后调用findViewById()
代码>。
我可以看到您在后面调用它,但我没有看到整个MainActivity.java。我相信你在之前的某个地方放了另一个findViewById()
检查com.example.lifehead.MainActivity
中的第22行。您的代码在那里失败。也许您使用了片段,您的问题在布局中得到了解决。。。
见:
将android:name重命名为新的包名 按钮登录=(按钮)findViewById(R.id.logIn)代码>
此错误主要是由于onCreate()上的声明、初始化在外部完成所致。要么在onCreate()内部声明并初始化,要么在onCreate()外部声明并通过调用相同的onCreate()内部方法进行初始化。发布完整的StackTrace和活动代码,而不仅仅是函数,你在哪里调用那个函数?或者这个方法以前被调用过onCreate@GuillermoMerino确实如此,但如果您以前调用过它,它仍然不会成为活动视图层次结构的一部分。
Button logIn = (Button) findViewById(R.id.login);
<fragment ... android:name="your.package.activity" ... />