2017-02-18 2 views
1

У меня есть два модуля в приложении. Во втором я работаю как контекст. Задача требует анимации панели инструментов через второй модуль. Проблема в том, что я не хочу отправлять объект панели инструментов от 1 до 2 модуля, возможно, есть какой-то способ получить его через Activity obj?Android find toolbar

+0

Вы должны сделать объект 'Toolbar' общедоступным. –

+0

Можете ли вы перечислить некоторый код или быть более подробным? –

+0

Я не могу, это просто в газете. У меня есть два модуля в приложении. Во втором я работаю как контекст. Задача требует анимации панели инструментов через второй модуль. Проблема в том, что я не хочу отправлять объект панели инструментов от 1 до 2 модуля, возможно, есть какой-то способ получить его через Activity obj? – Near1999

ответ

2

Это совсем не сложно. Если вы прочтете это answer, вы увидите, что на панели инструментов есть личный идентификатор, который можно найти с помощью getResources().getIdentifier("action_bar", "id", "android"). Но в некоторых случаях, когда вы попытаетесь найти представление по этому идентификатору, оно будет null. Затем вы должны попытаться найти его рекурсивно со вторым методом. Надеюсь, это может вам помочь.

@Nullable public Toolbar getToolbarView(@NonNull Context context) { 
     Activity activity = ((Activity) context); 

     int resId = context.getResources().getIdentifier("action_bar", "id", "android"); 

     Toolbar toolbar = (Toolbar) activity.findViewById(resId); 
     if (toolbar == null) { 
      toolbar = findToolbar((ViewGroup) activity.findViewById(android.R.id.content)); 
     } 
     return toolbar; 
    } 

    private Toolbar findToolbar(@NonNull ViewGroup viewGroup) { 
     for (int i = 0; i < viewGroup.getChildCount(); i++) { 
      View view = viewGroup.getChildAt(i); 
      if (view.getClass().getName().equals("android.support.v7.widget.Toolbar") 
        || view.getClass().getName().equals("android.widget.Toolbar")) { 
       return (Toolbar) view; 
      } else if (view instanceof ViewGroup) { 
       return findToolbar((ViewGroup) view); 
      } 
     } 
     return null; 
    }