안드로이드 bottomnavigation Fragment
조회수 564회
안드로이드 로그인화면에서 로그인을 한 후 MainActivity에 Fragment을 이용해서 bottomnavigation을 넣고 싶습니다. 그런데 fragment의 첫화면에 캘린더를 넣으려고 하는데 안되네요..
MainActivity에서
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.replace(R.id.content_main, calenderFragment).commitAllowingStateLoss();
위 코드로 fragment의 초기 화면을 지정하면 다시 로그인 화면으로 되돌아갑니다..ㅠㅠ
MainActivity.java
public class MainActivity extends AppCompatActivity {
private FragmentManager fragmentManager = getSupportFragmentManager();
private BottomNavigationView bottomNavigationView;
private CalendarFragment calenderFragment;
private ChattingFragment chattingFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bottomNavigationView = findViewById(R.id.bottomNavigationView);
fragment();
}
private void fragment() {
calenderFragment = new CalendarFragment();//(CalendarFragment) getSupportFragmentManager().findFragmentById(R.id.content_main);
chattingFragment = new ChattingFragment();
bottomNavigationView.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.replace(R.id.content_main, calenderFragment).commitAllowingStateLoss();
// getSupportFragmentManager().beginTransaction().replace(R.id.content_main, calenderFragment).commitAllowingStateLoss();
// getSupportFragmentManager().beginTransaction().replace(R.id.content_main, calenderFragment).commit();
// Log.i("tag", "information message : main");
}
private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
= new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Log.i("tag", "information message");
switch (item.getItemId()) {
case R.id.action_calendar:
Log.i("tag", "information message : calendar");
getSupportFragmentManager().beginTransaction().replace(R.id.content_main, calenderFragment).commit();
break;
case R.id.action_search:
Log.i("tag", "information message : search");
break;
case R.id.action_chatting:
Log.i("tag", "information message : chatting");
getSupportFragmentManager().beginTransaction().replace(R.id.content_main, chattingFragment).commit();
break;
case R.id.action_people:
Log.i("tag", "information message : people");
return true;
}
return false;
}
};
}
LoginActivity.java
public class LoginActivity extends AppCompatActivity {
// 비밀번호 정규식
private static final Pattern PASSWORD_PATTERN = Pattern.compile("^[a-zA-Z0-9!@.#$%^&*?_~]{4,16}$");
// 파이어베이스 인증 객체 생성
private FirebaseAuth firebaseAuth;
// 이메일과 비밀번호
private EditText editTextEmail;
private EditText editTextPassword;
private String email = "";
private String password = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
// 파이어베이스 인증 객체 선언
firebaseAuth = FirebaseAuth.getInstance();
editTextEmail = findViewById(R.id.email);
editTextPassword = findViewById(R.id.password);
}
public void singUp(View view) {
TextView sinUp = (TextView) findViewById(R.id.join);
sinUp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent join = new Intent(LoginActivity.this, JoinActivity.class);
startActivity(join);
}
});
}
public void signIn(View view) {
email = editTextEmail.getText().toString();
password = editTextPassword.getText().toString();
if (isValidEmail() && isValidPasswd()) {
loginUser(email, password);
}
}
// 이메일 유효성 검사
private boolean isValidEmail() {
if (email.isEmpty()) {
// 이메일 공백
return false;
} else if (!Patterns.EMAIL_ADDRESS.matcher(email).matches()) {
// 이메일 형식 불일치
return false;
} else {
return true;
}
}
// 비밀번호 유효성 검사
private boolean isValidPasswd() {
if (password.isEmpty()) {
// 비밀번호 공백
return false;
} else if (!PASSWORD_PATTERN.matcher(password).matches()) {
// 비밀번호 형식 불일치
return false;
} else {
return true;
}
}
// 로그인
private void loginUser(String email, String password) {
firebaseAuth.signInWithEmailAndPassword(email, password)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
// 로그인 성공
Toast.makeText(LoginActivity.this, "로그인 성공", Toast.LENGTH_SHORT).show();
Intent main = new Intent(LoginActivity.this, MainActivity.class);
startActivity(main);
} else {
// 로그인 실패
Toast.makeText(LoginActivity.this, "로그인 실패", Toast.LENGTH_SHORT).show();
}
}
});
}
}
CalendarFragment.java
class CalendarFragment extends Fragment {
MainActivity activity;
@Override
public void onAttach(Context context) {
super.onAttach(context);
//이 메소드가 호출될떄는 프래그먼트가 엑티비티위에 올라와있는거니깐 getActivity메소드로 엑티비티참조가능
activity = (MainActivity) getActivity();
}
@Override
public void onDetach() {
super.onDetach();
//이제 더이상 엑티비티 참초가안됨
activity = null;
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
//프래그먼트 메인을 인플레이트해주고 컨테이너에 붙여달라는 뜻임
ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.activity_calendar, container, false);
CalendarView calendar = rootView.findViewById(R.id.calendar);
calendar.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
@SuppressLint("WrongConstant")
public void onSelectedDayChange(CalendarView view, int year,
int month, int dayOfMonth) {
Intent calendar_intent = new Intent(getActivity(), WriteDairy.class);
startActivity(calendar_intent);
Toast.makeText(getActivity(), "" + year + "/" +
(month + 1) + "/" + dayOfMonth, 0).show();
}
});
return rootView;
}
}
-
(•́ ✖ •̀)
알 수 없는 사용자
댓글 입력