Android Studio修改启动主Activity后应用崩溃问题求助
问题解决:启动Home Activity时崩溃的空指针问题
错误原因
崩溃的核心是在Activity成员变量声明阶段调用findViewById()。此时Activity还未完成初始化,既没有加载布局,也没有可用的Context,调用findViewById()会触发空指针异常(NullPointerException)。
从报错信息可以看到,异常发生在Home.java的第14行——也就是你直接在成员变量声明时赋值的代码:
FloatingActionButton fab_Add=findViewById(R.id.fab_add);
这行代码会在Activity构造函数执行时运行,而此时setContentView(R.layout.home)还未执行,系统无法找到对应的View,同时Context尚未初始化,最终导致报错。
修复方案
只需要调整View初始化的时机,将findViewById()的调用放到onCreate()方法中,且必须在setContentView()之后:
修改后的Home.java代码:
package com.example.test; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.view.View; import com.getbase.floatingactionbutton.FloatingActionButton; public class Home extends AppCompatActivity { // 仅声明成员变量,不做初始化赋值 FloatingActionButton fab_Add; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.home); // 加载布局后,再初始化View并设置监听 fab_Add = findViewById(R.id.fab_add); fab_Add.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { openNewActivity(); } }); } public void openNewActivity(){ Intent intent = new Intent(this, Home2.class); startActivity(intent); } }
额外说明
你的AndroidManifest.xml配置是正确的:Home Activity已设置android:exported="true",并包含了MAIN和LAUNCHER的intent-filter,这部分无需修改。
内容的提问来源于stack exchange,提问作者Mirko Mincella
相关产品推荐
相关产品推荐

