Java Can';从一个目的地回来后,我不能访问额外的东西
我有一个main活动,它有一个孩子活动耐心活动 PatientActivity具有子活动RecordActivity 在MainActivity中,我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
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?