package com.jay.Atmos;
import android.annotation.SuppressLint;
import android.content.ComponentName;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.drawable.AnimationDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.TransitionDrawable;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageButton;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.widget.Toolbar;
import androidx.core.content.ContextCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import com.google.android.material.bottomnavigation.BottomNavigationView;
import com.google.android.material.navigation.NavigationView;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.auth.GithubAuthCredential;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.ismaeldivita.chipnavigation.ChipNavigationBar;
import com.jay.Atmos.Fragment.HomeFragment;
import com.jay.Atmos.Fragment.NotificationFragment;
import com.jay.Atmos.Fragment.ProfileFragment;
import com.jay.Atmos.Fragment.SearchFragment;
import com.jay.Atmos.calling.BaseActivity;
import com.jay.Atmos.calling.SinchService;
import com.sinch.android.rtc.SinchError;
import com.squareup.picasso.Picasso;
import java.util.Objects;
import de.hdodenhof.circleimageview.CircleImageView;
public class MainActivity extends BaseActivity implements SinchService.StartFailedListener {
Fragment selectedFagrament = null;
DatabaseReference RootRef;
private ImageButton ChatButton;
private Toolbar mToolbar;
int prev_nav_item = 0;
private CircleImageView navProfileImage;
private TextView navUserName;
private ActionBarDrawerToggle actionBarDrawerToggle;
private NavigationView navigationView;
private DrawerLayout drawerLayout;
Fragment fragment;
private FirebaseUser currentUser;
private FirebaseAuth mAuth;
ChipNavigationBar BottomNavBar;
FragmentManager fragmentManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mAuth = FirebaseAuth.getInstance();
currentUser = mAuth.getCurrentUser();
RootRef = FirebaseDatabase.getInstance().getReference().child("Users");
BottomNavBar = findViewById(R.id.bottom_nav_bar);
//
// RelativeLayout bganim = findViewById(R.id.bganim);
//
////
// TransitionDrawable trans = (TransitionDrawable) bganim.getBackground();
// trans.startTransition(3000);
//// trans.reverseTransition(500);
// trans.mutate();
// trans.canApplyTheme();
ChatButton = findViewById(R.id.ChatBtn);
initializechatbutton();
mToolbar = (Toolbar) findViewById(R.id.explore_toolbar);
setSupportActionBar(mToolbar);
Objects.requireNonNull(getSupportActionBar()).setTitle("Vish Me");
// getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
// getSupportActionBar().setDisplayShowCustomEnabled(true);
// getSupportActionBar().setCustomView(R.layout.app_bar_layout);
// getSupportActionBar().setDisplayShowCustomEnabled(true);
// View view =getSupportActionBar().getCustomView();
//
drawerLayout = (DrawerLayout) findViewById(R.id.drawyer_layout);
actionBarDrawerToggle = new ActionBarDrawerToggle(MainActivity.this, drawerLayout, R.string.drawer_open, R.string.drawer_close);
drawerLayout.addDrawerListener(actionBarDrawerToggle);
actionBarDrawerToggle.setHomeAsUpIndicator(R.drawable.ic_arrowoption);
actionBarDrawerToggle.syncState();
actionBarDrawerToggle.setDrawerSlideAnimationEnabled(true);
actionBarDrawerToggle.setDrawerIndicatorEnabled(true);
//
if (currentUser == null) {
SendUserToLoginActivity();
} else
{
VerifyUserExistence();
Bundle intent = getIntent().getExtras();
if(intent != null) {
String publisher = intent.getString("publisherid");
SharedPreferences.Editor editor = getSharedPreferences("PREFS", MODE_PRIVATE).edit();
editor.putString("profileid", publisher);
editor.apply();
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
new ProfileFragment()).commit();
}
}
//
drawerLayout = (DrawerLayout) findViewById(R.id.drawyer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
MainActivity.this, drawerLayout, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawerLayout.setDrawerListener(toggle);
actionBarDrawerToggle = new ActionBarDrawerToggle(MainActivity.this, drawerLayout, R.string.drawer_open, R.string.drawer_close);
drawerLayout.addDrawerListener(actionBarDrawerToggle);
actionBarDrawerToggle.syncState();
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
navigationView = (NavigationView) findViewById(R.id.navigation_view);
View navView = navigationView.inflateHeaderView(R.layout.navigation_header);
navProfileImage = (CircleImageView) navView.findViewById(R.id.nav_profile_image);
navUserName = (TextView) navView.findViewById(R.id.nav_profile_name);
// selectedFagrament = new HomeFragment();
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
new HomeFragment()).addToBackStack("home").commit();
ChatButton.setVisibility(View.VISIBLE);
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem Item) {
NavMenuSelector(Item);
return false;
}
});
if (savedInstanceState==null)
{
BottomNavBar.setItemSelected(R.id.nav_home,true);
fragmentManager = getSupportFragmentManager();
HomeFragment homeFragment = new HomeFragment();
fragmentManager.beginTransaction().replace(R.id.fragment_container , homeFragment).commit();
}
BottomNavBar.setOnItemSelectedListener(new ChipNavigationBar.OnItemSelectedListener() {
private final String TAG = MainActivity.class.getSimpleName();
@SuppressLint("NonConstantResourceId")
@Override
public void onItemSelected(int id) {
fragment = null;
switch (id)
{
case R.id.nav_home:
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
new HomeFragment()).addToBackStack("home").commit();
ChatButton.setVisibility(View.VISIBLE);
break;
case R.id.nav_search:
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
new SearchFragment()).addToBackStack("search").commit();
ChatButton.setVisibility(View.GONE);
// mToolbar.setVisibility(View.GONE);
break;
case R.id.nav_add:
selectedFagrament = null;
startActivity(new Intent(MainActivity.this, PostActivity.class));
break;
case R.id.nav_heart:
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
new NotificationFragment()).addToBackStack("notify").commit();
ChatButton.setVisibility(View.GONE);
mToolbar.setVisibility(View.GONE);
break;
case R.id.nav_profile:
SharedPreferences.Editor editor = getSharedPreferences("PREFS", MODE_PRIVATE).edit();
editor.putString("profileid", currentUser.getUid());
editor.apply();
ChatButton.setVisibility(View.GONE);
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
new ProfileFragment()).addToBackStack("profile").commit();
break;
}
if (fragment!=null)
{
fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.fragment_container,
fragment).commit();
}
else
{
Log.e(TAG , "Error");
}
}
});
ChatButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// selectedFagrament = null;
Intent ChatIntent = new Intent(MainActivity.this, ChatListActivity.class);
startActivity(ChatIntent);
}
});
}
private void initializechatbutton() {
}
private void NavMenuSelector (MenuItem Item){
switch (Item.getItemId()) {
case R.id.BirthDays:
Toast.makeText(this, "Birthdays selected", Toast.LENGTH_SHORT).show();
break;
case R.id.shortClips:
// Intent Intent = new Intent(MainActivity.this, ScreenShareActivity.class);
// startActivity(Intent); break;
case R.id.short_Films:
Toast.makeText(this, "ShortFilms selected", Toast.LENGTH_SHORT).show();
break;
case R.id.marketing:
Toast.makeText(this, "Marketing selected", Toast.LENGTH_SHORT).show();
break;
case R.id.Find_Friends_option:
Toast.makeText(this, "Find Friends selected", Toast.LENGTH_SHORT).show();
break;
case R.id.my_contacts:
Toast.makeText(this, "My Friends selected", Toast.LENGTH_SHORT).show();
break;
case R.id.privacy_Settings_option:
Toast.makeText(this, "Privacy Settings selected", Toast.LENGTH_SHORT).show();
break;
case R.id.main_Log_Out_option:
mAuth.signOut();
SendUserToLoginActivity();
break;
}
}
private void SendUserToLoginActivity () {
Intent editprofile = new Intent(MainActivity.this, AccountLoginActivity.class);
startActivity(editprofile);
}
@Override
public boolean onOptionsItemSelected (MenuItem item){
if (actionBarDrawerToggle.onOptionsItemSelected(item)) {
return true;
}
return super.onOptionsItemSelected(item);
}
private void VerifyUserExistence () {
RootRef.child(currentUser.getUid()).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if ((dataSnapshot.exists()) && (dataSnapshot.hasChild("username") && (dataSnapshot.hasChild("profileimage") && (dataSnapshot.hasChild("fullName"))))) {
String retrieveUserName = dataSnapshot.child("username").getValue().toString();
String retrieveProfileImage = dataSnapshot.child("profileimage").getValue().toString();
// getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
// new HomeFragment()).commit();
navUserName.setText(retrieveUserName);
Picasso.get().load(retrieveProfileImage).placeholder(R.drawable.profilepic).into(navProfileImage);
if (!getSinchServiceInterface().isStarted()) {
initiateSinch();
//
}
//
updateNavMenu();
} else if ((dataSnapshot.exists()) && (dataSnapshot.hasChild("username") && (dataSnapshot.hasChild("fullName")))) {
String retrieveUserName = dataSnapshot.child("username").getValue().toString();
updateNavMenu();
//
// getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
// new HomeFragment()).commit();
//
if (!getSinchServiceInterface().isStarted()) {
initiateSinch();
//
}
navUserName.setText(retrieveUserName);
} else if ((dataSnapshot.child("username").exists())) {
String retrieveUserName = dataSnapshot.child("username").getValue().toString();
navUserName.setText(retrieveUserName);
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
new HomeFragment()).commit();
updateNavMenu();
if (!getSinchServiceInterface().isStarted()) {
initiateSinch();
//
}
} else {
SendUserTosettingsActivity();
Toast.makeText(MainActivity.this, "Update your profile for settings!!!!!", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
private void updateNavMenu () {
String currentUserid = currentUser.getUid();
RootRef.child(currentUserid).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if ((dataSnapshot.exists()) && (dataSnapshot.hasChild("username") && (dataSnapshot.hasChild("profileimage") && (dataSnapshot.hasChild("fullName"))))) {
String retrieveUserName = dataSnapshot.child("username").getValue().toString();
String retrieveProfileImage = dataSnapshot.child("profileimage").getValue().toString();
navUserName.setText(retrieveUserName);
Picasso.get().load(retrieveProfileImage).placeholder(R.drawable.profilepic).into(navProfileImage);
} else if ((dataSnapshot.exists()) && (dataSnapshot.hasChild("username") && (dataSnapshot.hasChild("fullName")))) {
String retrieveUserName = dataSnapshot.child("username").getValue().toString();
navUserName.setText(retrieveUserName);
} else {
navUserName.setVisibility(View.INVISIBLE);
Toast.makeText(MainActivity.this, "Set profile NAVIGATION", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
private void SendUserTosettingsActivity ()
{
Intent editprofile = new Intent(MainActivity.this, SettingsActivity.class);
startActivity(editprofile);
}
private void initiateSinch () {
if (!getSinchServiceInterface().isStarted()) {
Intent serviceIntent = new Intent(MainActivity.this, SinchService.class);
serviceIntent.putExtra("inputExtra", currentUser.getUid());
ContextCompat.startForegroundService(MainActivity.this, serviceIntent);
getSinchServiceInterface().startClient(currentUser.getUid());
}
}
@Override
protected void onServiceConnected () {
getSinchServiceInterface().setStartListener(this);
}
@Override
public void onBackPressed() {
// if (fragment!=null)
// {
// fragmentManager = getSupportFragmentManager();
//
// fragmentManager.beginTransaction().replace(R.id.fragment_container,
// fragment).commit();
// }///
super.onBackPressed();
}
@Override
public void onBindingDied (ComponentName name){
if (!getSinchServiceInterface().isStarted()) {
Intent serviceIntent = new Intent(MainActivity.this, SinchService.class);
serviceIntent.putExtra("inputExtra", currentUser.getUid());
ContextCompat.startForegroundService(MainActivity.this, serviceIntent);
getSinchServiceInterface().startClient(currentUser.getUid());
}
}
@Override
protected void onStart () {
super.onStart();
}
@Override
protected void onPause () {
Toast.makeText(this, "on pause", Toast.LENGTH_SHORT).show();
super.onPause();
}
@Override
protected void onResume () {
Toast.makeText(this, "on pause", Toast.LENGTH_SHORT).show();
super.onResume();
}
@Override
protected void onRestart () {
super.onRestart();
}
@Override
public void onStartFailed (SinchError error){
Toast.makeText(this, error.toString(), Toast.LENGTH_LONG).show();
if (!getSinchServiceInterface().isStarted()) {
Intent serviceIntent = new Intent(MainActivity.this, SinchService.class);
serviceIntent.putExtra("inputExtra", currentUser.getUid());
ContextCompat.startForegroundService(MainActivity.this, serviceIntent);
getSinchServiceInterface().startClient(currentUser.getUid());
}
//////////////////////////////////////////////
}
@Override
public void onStarted () {
Toast.makeText(this, "Service Started", Toast.LENGTH_SHORT).show();
// finish();
}
}
i have a main activity with a bottom navigation menu which has a inter changing frangment. i also have a button which changes to other activity. when i try to go to other activity it gives a error displaying " FATAL EXCEPTION: main Process: com.jay.Atmos, PID: 10737 java.lang.IllegalArgumentException: No view found for id 0x7f0a0199 (com.jay.Atmos:id/fragment_container) for fragment HomeFragment{4d85ba} (187ff6c1-438d-411d-97cd-cf6946773579 id=0x7f0a0199) at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:513) at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:282) at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2189) at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2100) at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:2002) at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3138) at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:3072) at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:251) at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:502) at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:246) at com.jay.Atmos.MainActivity.onStart(MainActivity.java:662) at com.jay.Atmos.ChatActivity.onStart(ChatActivity.java:961) at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1435) at android.app.Activity.performStart(Activity.java:8231) at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3872) at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221) at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201) at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2336) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:246) at android.app.ActivityThread.main(ActivityThread.java:8653) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130) "