public class MainActivity extends AppCompatActivity {
int y = 0;
int m = 0;
int d = 0;
long now = System.currentTimeMillis();
Date date = new Date(now);
SimpleDateFormat sdfYear = new SimpleDateFormat("yyyy");
SimpleDateFormat sdfMonth = new SimpleDateFormat("MM");
SimpleDateFormat sdfday = new SimpleDateFormat("dd");
SimpleDateFormat sdfDate = new SimpleDateFormat("yyyyMMdd");
String nowYear = sdfYear.format(date);
String nowMonth = sdfMonth.format(date);
String nowDay = sdfday.format(date);
String nowDate = sdfDate.format(date);
ShareData shareData = new ShareData();
ImageButton wallpaperButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
shareData.setDate(nowDate);
BottomNavigationView navView = findViewById(R.id.nav_view);
AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder(
R.id.navigation_fragment1, R.id.navigation_fragment2, R.id.navigation_fragment3)
.build();
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);
NavigationUI.setupWithNavController(navView, navController);
wallpaperButton = findViewById(R.id.button_wallpaper);
wallpaperButton.bringToFront();
wallpaperButton.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
wallpaperload();
}
});
}
제 애플리케이션은 실행하면 간단히 메인액티비티가 실행됨과 동시에 프래그먼트에서 리사이클러뷰를 띄워주는 방식인데 문제는 메인액티비에서 프래그먼트로 초기값을 넘겨주고싶어서 getter/setter 나 Bundle로 값을 넘겨주려고했지만 초기값이 프래그먼트로 전달되지않습니다. 일주일동안 생명주기를 다시 공부하고 삽질해봤는데 제가모르는부분인지 원인을 찾을수가 없더라구요.. 메인액티비티에서 버튼을 클릭할때마다 프래그먼트로 값을 넘겨줘서 그때마다 프래그먼트를 갱신해 값을 바꾸는식의 어플을 만들려고했는데 생각처럼 되질않네요...
제가 알고싶은점은 저처럼 앱실행과 동시에 메인액티비티에서 프래그먼트를 띄워주었을때 메인액티비티에서 프래그먼트에 초기값을 어떻게 넘겨주는지 알고싶습니다.
아래는 프래그먼트쪽 소스와 게터세터 클래스 필요한 부분만 첨부합니다.
public class Fragment1 extends Fragment {
private RecyclerAdapter adpater;
private RecyclerView mRecyclerView;
private RecyclerView.LayoutManager mLayoutManager;
ShareData shareData = new ShareData();
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_fragment1, container, false);
mRecyclerView = (RecyclerView) view.findViewById(R.id.recyclerView);
mRecyclerView.setHasFixedSize(true);
mLayoutManager = new LinearLayoutManager(getActivity());
mRecyclerView.setLayoutManager(mLayoutManager);
mRecyclerView.scrollToPosition(0);
adpater = new RecyclerAdapter();
mRecyclerView.setAdapter(adpater);
listLoad(); //이쪽은 Asynk task로 데이터를 긁어와 어댑터에 연결해서 리사이클러뷰에 뿌려주는 함수입니다.
return view;
}
게터세터부문
public class ShareData {
private String date;
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
}