안녕하세요, 탐색 용 서랍 활동이 있습니다. 그 안에는 파편들이 있습니다. 나는 방향을 변경하여 onSavedInstanceState를 사용하여 시도했다. 그리고 네, 효과가 있습니다. 하지만 한 조각에서 다른 조각으로 갈 때. 그것은 호출되지 않습니다. 도와주세요. 내가해야 할 특정 일은이 조각으로 돌아갈 때 수신자 목록을 저장하는 것입니다. 미리 감사드립니다. 여기 내 코드는 : 당신의 조각 라이프 사이클이 중단 될 때하나의 프래그먼트에서 다른 프래그먼트로 이동 됨 savedInstanceState가 작동하지 않습니다.
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_recipients,container,false);
if(savedInstanceState!=null){
System.out.println("savedInstanceState Called!");
saved_recipients = savedInstanceState.getStringArrayList("recipients");
System.out.println(saved_recipients);
}
else{
System.out.println("savedInstanceState not called!");
button = (Button) view.findViewById(R.id.button);
recipients = new ArrayList<String>();
recipients_backend = new ArrayList<String>();
container_recipients = (ListView) view.findViewById(R.id.listView);
arrayAdpt= new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_list_item_1, recipients);
container_recipients.setAdapter(arrayAdpt);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(intent, PICK_CONTACT);
}
});
}
return view;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
@Override
public void onActivityResult(int reqCode, int resultCode, Intent data) {
super.onActivityResult(reqCode, resultCode, data);
switch (reqCode) {
case (PICK_CONTACT) :
if (resultCode == Activity.RESULT_OK) {
String cNumber = null;
Uri contactData = data.getData();
Cursor c = getActivity().managedQuery(contactData, null, null, null, null);
if (c.moveToFirst()) {
String id =c.getString(c.getColumnIndexOrThrow(ContactsContract.Contacts._ID));
String hasPhone =c.getString(c.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
if (hasPhone.equalsIgnoreCase("1")) {
Cursor phones = getActivity().getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ id,
null, null);
phones.moveToFirst();
cNumber = phones.getString(phones.getColumnIndex("data1"));
}
String name = c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
recipients.add(name + " " + cNumber);
System.out.println("New recipient added! Current list of recipients: " + recipients);
if (!(recipients.isEmpty())){
//button.setVisibility(View.INVISIBLE);
}
else
// button.setVisibility(View.VISIBLE);
recipients_backend.add(cNumber);
arrayAdpt.notifyDataSetChanged();
System.out.println(recipients_backend);
}
}
break;
}
}
@Override
public void onSaveInstanceState(Bundle outState){
super.onSaveInstanceState(outState);
outState.putStringArrayList("recipients",recipients);
}
안녕하십니까, @ F43nd1r을 참조하십시오. 무엇보다도 먼저 내 게시물에 응답 해 주셔서 감사드립니다. 내가 어떻게 할 수 있는지에 대한 샘플 코드를 제공해 주시겠습니까? 정말 고맙습니다! – NewbieProgrammer
추가 정보로 편집 됨 – F43nd1r
안녕하세요, F43nd1r. 죄송합니다. 게시물에 답장하는 데 시간이 오래 걸리면 죄송합니다. 내가 이것을 시도하자. 또한 saved_recipients = new ArrayList는 어디에 두어야합니까? – NewbieProgrammer