Android Studio中Intent跳转异常:登录后APP崩溃无法进入答题页
问题分析与解决:登录跳转后应用崩溃
开发项目时,用户登录成功后需跳转到答题模块,但Intent跳转后应用直接崩溃,无法进入答题页面。输入正确用户名和密码后触发崩溃,相关代码如下:
MainActivity 代码
public class MainActivity extends AppCompatActivity { TextView loginview; Button login; EditText name, pass; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Intent intent = new Intent(MainActivity.this, LandingPage.class); // intent.putExtra("username","Admin"); // startActivity(intent); loginview = findViewById(R.id.textview); name = findViewById(R.id.editText); pass = findViewById(R.id.editText2); login = findViewById(R.id.button); login.setOnClickListener(v -> { if (name.getText().toString().equals("admin") && pass.getText().toString().equals("pass")) { Toast.makeText(getApplicationContext(), "Login success", Toast.LENGTH_LONG).show(); Intent intent = new Intent(MainActivity.this, MainActivity2.class); name.setText(""); startActivity(intent); } else { Toast.makeText(getApplicationContext(), "Login unsuccessfull", Toast.LENGTH_LONG).show(); } }); } }
MainActivity2 部分代码
package com.example.quizapplicationfinal; import androidx.appcompat.app.AppCompatActivity; import android.app.AlertDialog; import android.content.Intent; import android.graphics.Color; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; public class MainActivity2 extends AppCompatActivity implements View.OnClickListener{ TextView totalQuestionsTextView; TextView questionTextView; Button ansA, ansB, ansC, ansD; Button submitBtn; int score=0; int totalQuestion = QuestionAnswer.question.length; int currentQuestionIndex = 0; String selectedAnswer = ""; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Intent intent=getIntent(); setContentView(R.layout.activity_main); } }
问题定位
致命错误:加载错误布局
MainActivity2的onCreate方法中,错误加载了登录页面的布局activity_main,而非答题页面的专属布局(应为activity_main2或对应名称的布局文件)。后续代码尝试初始化答题页面控件时,会因找不到对应ID触发NullPointerException,直接导致应用崩溃。潜在风险点
- 未确认
MainActivity2是否在AndroidManifest.xml中注册,未注册的Activity会导致跳转失败崩溃。 - 答题页面布局文件中,控件ID需与代码中声明的完全匹配,ID不匹配同样会引发空指针异常。
- 未确认
修复方案
修正布局加载代码
将MainActivity2中的setContentView(R.layout.activity_main);替换为答题页面的布局文件,示例如下:@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 替换为答题页面的布局 setContentView(R.layout.activity_main2); // 初始化所有答题页面控件 totalQuestionsTextView = findViewById(R.id.total_questions_textview); questionTextView = findViewById(R.id.question_textview); ansA = findViewById(R.id.ans_a_btn); ansB = findViewById(R.id.ans_b_btn); ansC = findViewById(R.id.ans_c_btn); ansD = findViewById(R.id.ans_d_btn); submitBtn = findViewById(R.id.submit_btn); // 绑定点击事件 ansA.setOnClickListener(this); ansB.setOnClickListener(this); ansC.setOnClickListener(this); ansD.setOnClickListener(this); submitBtn.setOnClickListener(this); // 加载第一题 loadNewQuestion(); }检查Manifest注册
在AndroidManifest.xml中确认已添加MainActivity2的注册项:<activity android:name=".MainActivity2"/>验证布局控件ID
确保答题页面布局文件(如activity_main2.xml)中的控件ID与代码中findViewById的参数完全一致。
内容的提问来源于stack exchange,提问作者T A HARI KRISHNAN
相关产品推荐
相关产品推荐

