You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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);
    }
}

问题定位

  1. 致命错误:加载错误布局
    MainActivity2的onCreate方法中,错误加载了登录页面的布局activity_main,而非答题页面的专属布局(应为activity_main2或对应名称的布局文件)。后续代码尝试初始化答题页面控件时,会因找不到对应ID触发NullPointerException,直接导致应用崩溃。

  2. 潜在风险点

    • 未确认MainActivity2是否在AndroidManifest.xml中注册,未注册的Activity会导致跳转失败崩溃。
    • 答题页面布局文件中,控件ID需与代码中声明的完全匹配,ID不匹配同样会引发空指针异常。

修复方案

  1. 修正布局加载代码
    将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();
    }
    
  2. 检查Manifest注册
    在AndroidManifest.xml中确认已添加MainActivity2的注册项:

    <activity android:name=".MainActivity2"/>
    
  3. 验证布局控件ID
    确保答题页面布局文件(如activity_main2.xml)中的控件ID与代码中findViewById的参数完全一致。


内容的提问来源于stack exchange,提问作者T A HARI KRISHNAN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 07:30:49