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

Android跳转异常:点击FindDoctorActivity卡片无法进入DoctorDetailsActivity

问题描述

使用Android Studio Flamingo版本,基于API 33开发医疗应用时,点击FindDoctorActivity中的CardView组件,预期跳转至DoctorDetailsActivity,但实际出现返回原页面、白屏或应用崩溃的情况。

相关代码

FindDoctorActivity 代码

package com.example.healthcare;

import androidx.appcompat.app.AppCompatActivity;
import androidx.cardview.widget.CardView;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;

public class FindDoctorActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_find_doctor);


      CardView exit = findViewById(R.id.cardFDBack);
      exit.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View v) {
              startActivity(new Intent(FindDoctorActivity.this,HomeActivity.class));
          }
      });

      CardView familyphysician = findViewById(R.id.cardFDFamilyPhysician);
      familyphysician.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View v) {
              Intent it = new Intent(FindDoctorActivity.this,DoctorDetailsActivity.class);
              it.putExtra("title", "Family Physicians");
              startActivity(it);
          }
      });

        CardView dietician = findViewById(R.id.cardFDDietician);
        dietician.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent it = new Intent(FindDoctorActivity.this,DoctorDetailsActivity.class);
                it.putExtra("title", "Dietician");
                startActivity(it);
            }
        });

        CardView surgeon = findViewById(R.id.cardFDSurgeon);
        familyphysician.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent it = new Intent(FindDoctorActivity.this,DoctorDetailsActivity.class);
                it.putExtra("title", "Surgeon");
                startActivity(it);
            }
        });

        CardView cardiologist = findViewById(R.id.cardFDCardiologist);
        cardiologist.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent it = new Intent(FindDoctorActivity.this,DoctorDetailsActivity.class);
                it.putExtra("title", "Cardiologist");
                startActivity(it);
            }
        });

        CardView dentist = findViewById(R.id.cardFDDentist);
        dentist.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent it = new Intent(FindDoctorActivity.this,DoctorDetailsActivity.class);
                it.putExtra("title", "Denstist");
                startActivity(it);
            }
        });
    }
}

DoctorDetailsActivity 代码

package com.example.healthcare;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.HashMap;

public class DoctorDetailsActivity extends AppCompatActivity {
    private String[][] doctor_details1 =
            {
                    {"Doctor Name : Ajit Saste", "Hospital Address : pimpri","Mobile No. : 1234567890","500"},
                    {"Doctor Name : Prasad Pawar", "Hospital Address : Nigdi","Mobile No. : 1234567809","600"},
                    {"Doctor Name : Swapnil Kale", "Hospital Address : Pune","Mobile No. : 1234567089","700"},
                    {"Doctor Name : Deepak Deshmukh", "Hospital Address : Chinchwad","Mobile No. : 1234560789","800"},
                    {"Doctor Name : Ashok Panda", "Hospital Address : Katraj","Mobile No. : 1234567890","900"}

            };
    private String[][] doctor_details2 =
            {
                    {"Doctor Name : Ankur Kar", "Hospital Address : pimpri","Mobile No. : 1234567890","500"},
                    {"Doctor Name : Anusha Gokhale", "Hospital Address : Nigdi","Mobile No. : 1234567809","600"},
                    {"Doctor Name : Dipa Rout", "Hospital Address : Pune","Mobile No. : 1234567089","700"},
                    {"Doctor Name : Aalok Krish", "Hospital Address : Chinchwad","Mobile No. : 1234560789","800"},
                    {"Doctor Name : Abhiram Kothari", "Hospital Address : Katraj","Mobile No. : 1234567890","900"}

            };
    private String[][] doctor_details3 =
            {
                    {"Doctor Name : Madhur Bhargav", "Hospital Address : pimpri","Mobile No. : 1234567890","500"},
                    {"Doctor Name : Advaith Kapur", "Hospital Address : Nigdi","Mobile No. : 1234567809","600"},
                    {"Doctor Name : Shaurya Nzareth", "Hospital Address : Pune","Mobile No. : 1234567089","700"},
                    {"Doctor Name : Sudarshan Gopal", "Hospital Address : Chinchwad","Mobile No. : 1234560789","800"},
                    {"Doctor Name : Aruna Upadhyay", "Hospital Address : Katraj","Mobile No. : 1234567890","900"}

            };
    private String[][] doctor_details4 =
            {
                    {"Doctor Name : Rajesh Kade", "Hospital Address : pimpri","Mobile No. : 1234567890","500"},
                    {"Doctor Name : Varsha Chaudhari", "Hospital Address : Nigdi","Mobile No. : 1234567809","600"},
                    {"Doctor Name : Anah Dalal", "Hospital Address : Pune","Mobile No. : 1234567089","700"},
                    {"Doctor Name : Gauri Lad", "Hospital Address : Chinchwad","Mobile No. : 1234560789","800"},
                    {"Doctor Name : Nima Jayram", "Hospital Address : Katraj","Mobile No. : 1234567890","900"}

            };
    private String[][] doctor_details5 =
            {
                    {"Doctor Name : Manas Mannan", "Hospital Address : pimpri","Mobile No. : 1234567890","500"},
                    {"Doctor Name : Kavika Ramesh", "Hospital Address : Nigdi","Mobile No. : 1234567809","600"},
                    {"Doctor Name : Minali Saraff", "Hospital Address : Pune","Mobile No. : 1234567089","700"},
                    {"Doctor Name : Rashmi Chander", "Hospital Address : Chinchwad","Mobile No. : 1234560789","800"},
                    {"Doctor Name : Neel Salvi", "Hospital Address : Katraj","Mobile No. : 1234567890","900"}

            };


    TextView tv;
    Button btn;
    String[][] doctor_details = {};
    HashMap<String, String> item;
    ArrayList list;
    SimpleAdapter sa;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_doctor_details);

        tv =  findViewById(R.id.textViewDDTitle);
        btn = findViewById(R.id.buttonDDBack);

        Intent it = getIntent();
        String title = it.getStringExtra("title");
        tv.setText(title);

        if(title.compareTo("Family Physicians")==0)
            doctor_details = doctor_details1;
        else
        if(title.compareTo("Dietician")==0)
            doctor_details = doctor_details2;
        else
            if(title.compareTo("Surgeon")==0)
            doctor_details = doctor_details3;
        else
            if(title.compareTo("Dentist")==0)
            doctor_details = doctor_details4;
        else
            doctor_details = doctor_details5;



        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                startActivity(new Intent(DoctorDetailsActivity.this,FindDoctorActivity.class));
            }
        });

        list = new ArrayList();
        for(int i=0;i<doctor_details.length;i++){
            item = new HashMap<String,String>();
            item.put("line1", doctor_details[i][0]);
            item.put("line2", doctor_details[i][1]);
            item.put("line3", doctor_details[i][2]);
            item.put("line4", doctor_details[i][3]);
            item.put("line5","Cons Fees :"+doctor_details[i][4]+"/- ");
            list.add( item );
        }
         sa = new SimpleAdapter(this,list,
                 R.layout.multi_lines,
                 new String[]{"line1","line2","line3","line4","line5"},
                 new int []{R.id.line_a,R.id.line_b,R.id.line_c,R.id.line_d,R.id.line_e});
         ListView lst = findViewById(R.id.listViewDD);
         lst.setAdapter(sa);
    }
}
问题分析与修复方案

1. Surgeon CardView点击事件绑定错误

在FindDoctorActivity中,定义CardView surgeon后,错误地给familyphysician重复设置点击监听,导致:

  • 点击Family Physician的CardView会跳转到Surgeon页面(原有逻辑被覆盖)
  • 点击Surgeon的CardView无响应

修复:将Surgeon的点击监听绑定到surgeon对象:

CardView surgeon = findViewById(R.id.cardFDSurgeon);
surgeon.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent it = new Intent(FindDoctorActivity.this,DoctorDetailsActivity.class);
        it.putExtra("title", "Surgeon");
        startActivity(it);
    }
});

2. Dentist的Extra参数拼写错误

传递的title为"Denstist",但DoctorDetailsActivity中判断的是"Dentist",导致无法匹配到对应医生数据,默认使用Cardiologist的数据集。

修复:修正拼写错误:

CardView dentist = findViewById(R.id.cardFDDentist);
dentist.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent it = new Intent(FindDoctorActivity.this,DoctorDetailsActivity.class);
        it.putExtra("title", "Dentist");
        startActivity(it);
    }
});

3. 数组越界异常(崩溃核心原因)

每个doctor_details子数组仅包含4个元素(索引0-3),但代码中尝试访问doctor_details[i][4],触发ArrayIndexOutOfBoundsException,直接导致应用崩溃。

修复:将费用字段的索引改为3(对应子数组的第4个元素):

item.put("line5","Cons Fees :"+doctor_details[i][3]+"/- ");

可选优化:页面跳转后清理栈(避免重复页面)

例如在退出FindDoctorActivity时,调用finish()关闭当前页面:

exit.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        startActivity(new Intent(FindDoctorActivity.this,HomeActivity.class));
        finish();
    }
});

内容的提问来源于stack exchange,提问作者Jay Chaudhari

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 06:12:04