Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Can';从一个目的地回来后,我不能访问额外的东西_Java_Android_Android Intent - Fatal编程技术网

Java Can';从一个目的地回来后,我不能访问额外的东西

Java Can';从一个目的地回来后,我不能访问额外的东西,java,android,android-intent,Java,Android,Android Intent,我有一个main活动,它有一个孩子活动耐心活动 PatientActivity具有子活动RecordActivity 在MainActivity中,我intent到PatientActivity添加了一个额外的内容: MainActivity.java ... listPatients.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView&l

我有一个main活动,它有一个孩子活动耐心活动

PatientActivity具有子活动RecordActivity

MainActivity中,我
intent
PatientActivity添加了一个额外的内容:

MainActivity.java

...
listPatients.setOnItemClickListener(new OnItemClickListener()
{
    @Override
    public void onItemClick(AdapterView<?> parent, View view,
            int position, long id)
    {
        try {
            Intent intent = new Intent(view.getContext(), PatientActivity.class);
            intent.putExtra("patient", patients.getJSONObject(position).toString());
            startActivity(intent);
        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
});
...
    ...
@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);

    intent = getIntent();

    String patientFromJson = intent.getStringExtra("patient");

    patient = Patient.fromJson(patientFromJson);

    ...
...
@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);

    try
    {
        intent = getIntent();

        String patientFromJson = intent.getStringExtra("patient");

        patient = Patient.fromJson(patientFromJson);

        SharedPreferences.Editor editor = getSharedPreferences("br.com.metadoc", MODE_PRIVATE).edit();
        editor.putString("currPatient", patient.toString());
        editor.commit();

        setTitle(patient.getName());
    }
    catch(NullPointerException e)
    {
        String toBeAPatient = getSharedPreferences("br.com.metadoc", MODE_PRIVATE).getString("currPatient", null);

        patient = Patient.fromJson(toBeAPatient);

        setTitle(patient.getName());
    }
    ...
现在,在耐心活动中,在某个点,我
意图
记录活动

RecordActivity中,当我按下Up按钮(而不是back按钮)时,它会崩溃,因为PatientActivity.onCreate()找不到patient的引用,导致NullPointerException

我怎样才能解决这个问题呢?

试试这个:

Bundle extras = getIntent().getExtras();
ArrayList<String>hi= new ArrayList<String>();
hi = extras.getStringArrayList("patient");
Bundle extras=getIntent().getExtras();
ArrayListhi=新的ArrayList();
hi=额外的getStringArrayList(“患者”);

按照@heLLo的建议,使用共享引用完成

PatientActivity.java

...
listPatients.setOnItemClickListener(new OnItemClickListener()
{
    @Override
    public void onItemClick(AdapterView<?> parent, View view,
            int position, long id)
    {
        try {
            Intent intent = new Intent(view.getContext(), PatientActivity.class);
            intent.putExtra("patient", patients.getJSONObject(position).toString());
            startActivity(intent);
        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
});
...
    ...
@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);

    intent = getIntent();

    String patientFromJson = intent.getStringExtra("patient");

    patient = Patient.fromJson(patientFromJson);

    ...
...
@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);

    try
    {
        intent = getIntent();

        String patientFromJson = intent.getStringExtra("patient");

        patient = Patient.fromJson(patientFromJson);

        SharedPreferences.Editor editor = getSharedPreferences("br.com.metadoc", MODE_PRIVATE).edit();
        editor.putString("currPatient", patient.toString());
        editor.commit();

        setTitle(patient.getName());
    }
    catch(NullPointerException e)
    {
        String toBeAPatient = getSharedPreferences("br.com.metadoc", MODE_PRIVATE).getString("currPatient", null);

        patient = Patient.fromJson(toBeAPatient);

        setTitle(patient.getName());
    }
    ...

Bundle
没有
getStringExtra()
方法。如果以数组形式发送它会怎么样?同时发送数组中位置的int。不知道你想做什么。。。这与我正在使用的
getIntent().getStringExtra(“患者”)
有什么不同?哦,您正试图使用此引用返回并获取?那不行。我不明白你的问题。保存此信息的最简单方法是使用SharedReferences,如果您想保留它,是否确定您将意图从PatientActivity传递到RecordActivity?