Fragment에서 Activity로 데이터를 전송해서 값을 출력해봤는데요... 작동하지 않는 것 같습니다.
[WriteLogMain.class]
public class WriteLogMain extends AppCompatActivity {
Toolbar toolbar;
Button writeLogBtn;
ArrayList<String> registerHealthLog = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.health_write_log_main);
toolbar = findViewById(R.id.logMainToolbar);
setSupportActionBar(toolbar); // 툴바를 액티비티의 앱바로 지정한다.
// 현재 날짜 가져오기.
// SimpleDateFormat을 통해 원하는 형식으로 데이터를 가져옴.
long now = System.currentTimeMillis();
Date date = new Date(now);
SimpleDateFormat dateFormat = new SimpleDateFormat("M" + "월");
String getTime = dateFormat.format(date);
ActionBar actionBar = getSupportActionBar(); // 툴바에 대한 참조 획득하기
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
actionBar.setTitle(getTime + " 운동기록");
// 로그 기록 버튼을 클릭하면 로그 기록 화면으로 이동
writeLogBtn = findViewById(R.id.writeLogBtn);
writeLogBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getApplicationContext(), WriteLog.class);
startActivity(intent);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
int i = 0;
String s = data.getStringExtra("0");
while(s != null) {
registerHealthLog.add(s);
s = data.getStringExtra(String.valueOf(i++));
}
}
}
로그 기록 버튼을 클릭하면 프래그먼트 화면을 가진 액티비티 화면으로 이동합니다.
이제 프래그먼트에 있는 리사이클러뷰에서 아이템을 클릭하고 등록하기 버튼을 클릭하면 값들이 배열에 넘어와야 할 것 같은데 안넘어오네요..
[프래그먼트 화면을 가진 액티비티.class]
// 등록하기 버튼을 클릭하면 클릭된 아이템들을 모두 가져옴
registerBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Activity로 데이터 전송
Context context = v.getContext();
Intent intent = new Intent(context, WriteLogMain.class);
ArrayList<String> requestList = HealthLogAdapter.GetItems();
for(int i = 0; i < requestList.size(); i++) {
intent.putExtra(String.valueOf(i), requestList.get(i));
}
context.startActivity(intent);
}
});
[리사이클러뷰에서 선택된 것만 배열에 담기]
else {
ItemList item = itemList.get(position);
String text = item.getListText();
holder.getTextView().setText(text);
holder.getTextView().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if ( mSelectedItems.get(position, false) ){
mSelectedItems.put(position, true); // 선택 해제 되면 색상 변경
selectedItems.remove(itemList.get(position)); // 선택 해제된 로그 배열에서 제거
v.setBackgroundColor(Color.WHITE);
} else {
mSelectedItems.put(position, false); // 선택 되면 색상 변경
selectedItems.add(itemList.get(position).getListText()); // 로그 추가를 위해 배열에 담기
v.setBackgroundColor(0xffd3d3d3);
}
}
});
}