データを保持するために使用するものを拡張Application
して宣言しましpublic ArrayList
た(Androidのシングルトンであるべきではないことはわかっていますが、それが機能する唯一のものでした)。
問題 :ダイアログ
を表示してCreateNewObject
[OK] を押すと、次のエラーが表示されます。
エラー:
10-30 10:20:19.069: E/AndroidRuntime(632): java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified from a background thread, but only from the UI thread. [in ListView(16908298, class android.widget.ListView) with Adapter(class com.nuclear.gfr.adapter.PatientAdapter)]
私のコード:
public class NewPatientDialog extends DialogFragment {
private static final String TAG = "NUKClear";
OnNewPatientlistener listener;
private NewPatientDialog() {
}
public interface OnNewPatientlistener {
public void OnNewPatient(Patient newPatient);
}
public void addPatientAction(Patient patient) {
OnNewPatientlistener activity = (OnNewPatientlistener) getActivity();
activity.OnNewPatient(patient);
}
public static NewPatientDialog newInstance(String title) {
NewPatientDialog frag = new NewPatientDialog();
Bundle args = new Bundle();
args.putString("title", title);
frag.setArguments(args);
return frag;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
String title = getArguments().getString("title");
LayoutInflater inflater = (LayoutInflater) getActivity()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final View newPatient = inflater.inflate(R.layout.new_patient_dialog,
null);
Log.d(TAG, "Creating dialog for new patientinput...");
return new AlertDialog.Builder(getActivity())
.setIcon(R.drawable.alert_dialog_icon)
.setTitle(title)
.setView(newPatient)
.setPositiveButton(R.string.alert_dialog_ok,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
final EditText name = (EditText) newPatient
.findViewById(R.id.name_edit);
final EditText ssn = (EditText) newPatient
.findViewById(R.id.ssn_edit);
final EditText accnum = (EditText) newPatient
.findViewById(R.id.accnr_edit);
final Patient patient = new Patient(ssn.getText()
.toString(), name.getText().toString(),
new Study(SimpleDateFormat
.getDateInstance().toString(),
accnum.getText().toString()));
addPatientAction(patient);
DatabaseHelper db = new DatabaseHelper(
getActivity());
db.addPatientStudy(patient);
/*DataManager dm = new DataManager(getActivity()
.getBaseContext());
dm.addPatient(patient);*/
/*
* PatientManager pm = new
* PatientManager(getActivity
* ().getBaseContext()); pm.add(patient);
*/
// Interfacecallback
/*
* OnNewPatientlistener activity =
* (OnNewPatientlistener) getActivity();
* activity.OnNewPatient(patient);
*/
}
})
.setNegativeButton(R.string.alert_dialog_cancel,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
dismiss();
}
}).create();
}
}
なぜこれが起こるのか、これを回避する方法を誰かが説明できますか?