마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

기존 변수값을 바꿀 시 리스트뷰가 초기화가 됩니다.

0 추천

2번 액티비티에서 다이얼로그에서

AA변수값을 인탠트를 이용하여 메인페이지로 넘겨줍니다.

메인에서는 이를 받아 텍스트뷰에 저장합니다.

그리고 메인의 탭바 클릭 이벤트로 다이얼로그를 구현하였고

거기서 클릭 시에만 2번 액티비티에서 받은 데이터와 탭바 다이얼로그의 데이터를 모두 메인의 리스트뷰에 뿌려줍니다. 

그런데 2번 페이지 정보(AA)를 변경하면 기존 메인의 리스트뷰가 초기화됩니다.

혹시 도움을 주실 분이 있을까하여 질문합니다.

소스는 관련된 부분만 올리겠습니다.

2번 액티비티. .setPositiveButton("확인", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(SettingActivity.this,"저장된 값 : " + a1 + ", " + a2 + ", " + a3, Toast.LENGTH_SHORT).show(); Intent intent = new Intent(SettingActivity.this, MainActivity.class); String AA = a1 + ", " + a2 + ", " + a3; intent.putExtra("settingData",AA); startActivity(intent); } })

메인 액티비티.

Intent intent = getIntent();
String AA = intent.getStringExtra("settingData");
data_view = ( TextView ) findViewById(R.id.data_view);
data_view.setText(AA);

mLvList = ( ListView ) findViewById(R.id.main_lv_list);
mLvList.setOnItemClickListener(this);
mAlData = new ArrayList<String>();
mAaString = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mAlData);
mLvList.setAdapter(mAaString);
--------------
AlertDialog.Builder builder = new AlertDialog.Builder(this);
                builder.setTitle("선택해주세요.")
                        .setSingleChoiceItems(items, 0, new OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                selectedItem[0] = which;
                            }
                        })
                        .setPositiveButton("확인", new OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
//                                Toast.makeText(MainActivity.this, items[selectedItem[0]], Toast.LENGTH_SHORT).show();
                                if (data_view.getText().toString() == "") {
                                    // 설정을 안한 경우
                                    Toast.makeText(getApplicationContext(), "설정부터하세요.", Toast.LENGTH_SHORT).show();
                                } else {
                                    Toast.makeText(getApplicationContext(), data_view.getText().toString() + ", " + items[selectedItem[0]], Toast.LENGTH_SHORT).show();
                                    // 현재시간 미구현
                                    String data = "현재시간, " + data_view.getText().toString() + ", " + items[selectedItem[0]];
                                    // 리스트에 데이터를 입력
                                    mAlData.add(data);
                                    mAaString.notifyDataSetChanged();
띠용 님이 2018년 8월 26일 질문

1개의 답변

0 추천
설명이 조금 부족하다고 느껴지네요(소스코드도 잘려서 안보입니다)
1. 메인액티비티, B액티비티가 있다.
2. B액티비티안에서 다이얼로그를 통해 String을 입력 받는다.
3. 입력받은 후 다이얼로그를 완료하게 되면 메인액티비티로 데이터를 전달한다.
4. 메인액티비티의 listview가 초기화 되어버린다.
 

제가 이해한게 맞나요
백마귀족 (1,550 포인트) 님이 2018년 8월 27일 답변
...