Size: a a a

Cicerone Chat (RUS)

2019 January 14

NK

ID:649333610 in Cicerone Chat (RUS)
what is the point if you cant figure out where is error
источник

IS

Ilya Smirnov in Cicerone Chat (RUS)
значит не отдебажил
источник

VC

Vasili Chyrvon in Cicerone Chat (RUS)
ID:649333610
I otdebajil
Try to simplify the code by removing all that is not related to your screen. Or just debug trying to figure out in which moment and what code returns null for wanted fragment. Then show this code fragment (small) to us if you still can't find why it returns null
источник

AP

Alexey Pushkarev in Cicerone Chat (RUS)
кажется этот парень зафлудил весь чат)
источник

NK

ID:649333610 in Cicerone Chat (RUS)
@Jeevuz navList.setOnItemClickListener(object : ItemClickListener<MenuView.MenuItem> {
           override fun onItemClicked(t: MenuView.MenuItem, position: Int) {
               val fragment = supportFragmentManager.findFragmentById(R.id.fragmentContainer)
               var screen = ""
               @Suppress("Annotator") val currentScreen = fragment!!.arguments?.getString(ScreenNavigator.SCREEN_NAME)
               val data = Bundle()
               when (t.title) {
                   R.string.item_menu_home -> {
                       screen = Screen.HOME
                   }
                   R.string.item_menu_session -> {
                       screen = Screen.START_SESSION
                   }
                   R.string.chat_support -> {
                       navList.clearBadgeForMenuItem(R.string.support_feedback)
                       Notifications.cancelNotification(this@MainActivity, Notifications.PushData.Message.LOCAL_PUSH_ID)
                       screen = Screen.CHAT
                   }
                   R.string.item_menu_pain_profile -> {
                       screen = Screen.SELF_DIAGNOSIS
                   }
                   R.string.item_menu_schedule_reminders -> {
                       screen = Screen.SCHEDULE
                   }
                   R.string.item_menu_progress_prognosis -> {
                       screen = Screen.PROGRESS
                   }
                   R.string.activity_journal -> {
                       screen = Screen.ACTIVITY_JOURNAL
                   }
                   R.string.therapy_information -> {
                       screen = Screen.THERAPY_INFO
                   }
                   R.string.item_menu_therapy_settings -> {
                       screen = Screen.THERAPY_SETTINGS
                   }
                   R.string.item_menu_account -> {
                       data.putBoolean("profile", true)
                       screen = Screen.PROFILE
                   }
                   R.string.item_menu_favourite -> {
                       screen = Screen.FAVOURITE_EXERCISES //this menu
                   }
                   R.string.medical_disclaimer -> {
                       screen = Screen.MEDICAL_DISCLAIMER
                   }
                   R.string.terms_of_use -> {
                       screen = Screen.TERMS_OF_USE
                   }
                   R.string.privacy_policy -> {
                       screen = Screen.PRIVACY_POLICY
                   }
                   R.string.rate_share -> {
                       screen = Screen.RATE_AND_SHARE
                       val marketIntent = Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id={appId}"))
                       startActivity(marketIntent)
                   }
                   R.string.about_healo -> {
                       screen = Screen.ABOUT
                   }
                   R.string.sign_out -> {
                       toggleDrawerScreen(false)
                       presenter.logOut()
                       return
                   }
                   else -> toggleDrawerScreen(false)
               }
               toggleDrawerScreen(false)

               if (!screen.isEmpty() && screen != currentScreen) {
                   actionDrawerClose = if ((fragment is OnBackPressed) && (fragment.onBackPressed(screen, data))) {
                       null
                   } else {
                       {
                           HealApplication.INSTANCE.router.navigateTo(
                                   screen,
                                   data
                           )
                       }
                   }
               } else {
                   actionDrawerClose = null
               }
           }
       })
источник

NK

ID:649333610 in Cicerone Chat (RUS)
I am getting error here
источник

NK

ID:649333610 in Cicerone Chat (RUS)
R.string.medical_disclaimer -> {
                       screen = Screen.MEDICAL_DISCLAIMER
                   } in this line
источник

AP

Alexey Pushkarev in Cicerone Chat (RUS)
ID:649333610
@Jeevuz navList.setOnItemClickListener(object : ItemClickListener<MenuView.MenuItem> {
           override fun onItemClicked(t: MenuView.MenuItem, position: Int) {
               val fragment = supportFragmentManager.findFragmentById(R.id.fragmentContainer)
               var screen = ""
               @Suppress("Annotator") val currentScreen = fragment!!.arguments?.getString(ScreenNavigator.SCREEN_NAME)
               val data = Bundle()
               when (t.title) {
                   R.string.item_menu_home -> {
                       screen = Screen.HOME
                   }
                   R.string.item_menu_session -> {
                       screen = Screen.START_SESSION
                   }
                   R.string.chat_support -> {
                       navList.clearBadgeForMenuItem(R.string.support_feedback)
                       Notifications.cancelNotification(this@MainActivity, Notifications.PushData.Message.LOCAL_PUSH_ID)
                       screen = Screen.CHAT
                   }
                   R.string.item_menu_pain_profile -> {
                       screen = Screen.SELF_DIAGNOSIS
                   }
                   R.string.item_menu_schedule_reminders -> {
                       screen = Screen.SCHEDULE
                   }
                   R.string.item_menu_progress_prognosis -> {
                       screen = Screen.PROGRESS
                   }
                   R.string.activity_journal -> {
                       screen = Screen.ACTIVITY_JOURNAL
                   }
                   R.string.therapy_information -> {
                       screen = Screen.THERAPY_INFO
                   }
                   R.string.item_menu_therapy_settings -> {
                       screen = Screen.THERAPY_SETTINGS
                   }
                   R.string.item_menu_account -> {
                       data.putBoolean("profile", true)
                       screen = Screen.PROFILE
                   }
                   R.string.item_menu_favourite -> {
                       screen = Screen.FAVOURITE_EXERCISES //this menu
                   }
                   R.string.medical_disclaimer -> {
                       screen = Screen.MEDICAL_DISCLAIMER
                   }
                   R.string.terms_of_use -> {
                       screen = Screen.TERMS_OF_USE
                   }
                   R.string.privacy_policy -> {
                       screen = Screen.PRIVACY_POLICY
                   }
                   R.string.rate_share -> {
                       screen = Screen.RATE_AND_SHARE
                       val marketIntent = Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id={appId}"))
                       startActivity(marketIntent)
                   }
                   R.string.about_healo -> {
                       screen = Screen.ABOUT
                   }
                   R.string.sign_out -> {
                       toggleDrawerScreen(false)
                       presenter.logOut()
                       return
                   }
                   else -> toggleDrawerScreen(false)
               }
               toggleDrawerScreen(false)

               if (!screen.isEmpty() && screen != currentScreen) {
                   actionDrawerClose = if ((fragment is OnBackPressed) && (fragment.onBackPressed(screen, data))) {
                       null
                   } else {
                       {
                           HealApplication.INSTANCE.router.navigateTo(
                                   screen,
                                   data
                           )
                       }
                   }
               } else {
                   actionDrawerClose = null
               }
           }
       })
please use pastebin or gist for such big code snippets
источник

NK

ID:649333610 in Cicerone Chat (RUS)
okay just wait
источник

NK

ID:649333610 in Cicerone Chat (RUS)
источник

NK

ID:649333610 in Cicerone Chat (RUS)
источник

VC

Vasili Chyrvon in Cicerone Chat (RUS)
ID:649333610
R.string.medical_disclaimer -> {
                       screen = Screen.MEDICAL_DISCLAIMER
                   } in this line
Here? Why? This line just sets the screen value.
источник

NK

ID:649333610 in Cicerone Chat (RUS)
becuase for each fragment
источник

VC

Vasili Chyrvon in Cicerone Chat (RUS)
What is the value of current Screen later?
источник

NK

ID:649333610 in Cicerone Chat (RUS)
they creating constant file
источник

IS

Ilya Smirnov in Cicerone Chat (RUS)
Где конструктор у MedicalDisclaimerFragment?
Из вчерашних кусков кода видел, что фрагмент создается вот так fragment = fragments.get(screenKey).newInstance();

Где же newInstance() у этого фрагмента?
источник

NK

ID:649333610 in Cicerone Chat (RUS)
you mean I have to create a new instance
источник

NK

ID:649333610 in Cicerone Chat (RUS)
@Jkstop gde videl
источник

A

Alexey in Cicerone Chat (RUS)
Такой вопрос, у меня bottom navigation bar в центре стека экранов, и я хочу прятать и показывать его, в зависимости от открытого фрагмента, где мне в supportAppNavigator чекать, какой фрагмент открывается?
источник

IS

Ilya Smirnov in Cicerone Chat (RUS)
ID:649333610
public class ScreenNavigator {

   public static final String SCREEN_TRANSITION = "SCREEN_TRANSITION";
   public static final String SCREEN_NAME = "SCREEN_NAME";
   public static final String SCREEN_TRANSITION_DIRECTION = "SCREEN_TRANSITION_DIRECTION";

   private Navigator navigator;

   public ScreenNavigator(FragmentActivity activity, int containerViewId, Class screenClass) {
       this.navigator = initNavigator(activity, containerViewId, screenClass);
   }

   public static Set<Field> findFieldsWithAnnotation(Class<?> classs, Class<? extends Annotation> ann) {
       Set<Field> set = new HashSet<>();
       Class<?> c = classs;
       while (c != null) {
           for (Field field : c.getDeclaredFields()) {
               if (field.isAnnotationPresent(ann)) {
                   set.add(field);
               }
           }
           c = c.getSuperclass();
       }
       return set;
   }

   private SupportAppNavigator initNavigator(final FragmentActivity activity, int containerViewId, final Class screenClass) {
       return new SupportAppNavigator(activity, containerViewId) {

           @Override
           protected Intent createActivityIntent(String screenKey, Object data) {
               Map<String, Class<? extends Activity>> activities = getActivitiesScreens(screenClass);
               if (!activities.containsKey(screenKey)) return null;
               Intent intent = new Intent(activity, activities.get(screenKey));
               if (data != null) {
                   Bundle bundle = (Bundle) data;
                   intent.putExtras(bundle);
               }
               return intent;
           }

           @Override
           protected Fragment createFragment(String screenKey, Object data) {
               Map<String, Class<? extends Fragment>> fragments = getFragmentScreens(screenClass);
               if (!fragments.containsKey(screenKey)) {
                   return null;
               }
               Fragment fragment = null;
               try {
                   fragment = fragments.get(screenKey).newInstance();
                   int direction = Gravity.BOTTOM;
                   if (data != null) {
                       direction = ((Bundle) data).getInt(SCREEN_TRANSITION_DIRECTION, Gravity.BOTTOM);
                   }
                   if (data == null || !((Bundle) data).containsKey(SCREEN_TRANSITION)) {
                       Slide slide = new Slide(direction);
                       slide.setDuration(250);
                       slide.setInterpolator(new LinearInterpolator());
                       fragment.setEnterTransition(slide);
                   }
                   if (data != null) {
                       Bundle bundle = ((Bundle) data);
                       bundle.putString(SCREEN_NAME, screenKey);
                       fragment.setArguments(bundle);
                   } else {
                       Bundle bundle = new Bundle();
                       bundle.putString(SCREEN_NAME, screenKey);
                       fragment.setArguments(bundle);
                   }
               } catch (Exception e) {
                   e.printStackTrace();
                   return null;
               }
               if (activity instanceof MainActivity) {
                   ((MainActivity) activity).changeBackground();
               }
               return fragment;

           }

           @Override
           protected void setupFragmentTransactionAnimation(Command command, Fragment currentFragment, Fragment nextFragment, FragmentTransaction fragmentTransaction) {
               if (command instanceof Replace) {
                   if (((Replace) command).getTransitionData() != null) {
                       Bundle bundle = (Bundle) ((Replace) command).getTransitionData();
тут
источник