2016-04-20 5 views
0

У меня есть две точки зрения, и я хочу, чтобы получить доступ к данным, хранящимся в переменной View A и передать его в окне просмотра B.андроид - Использование переменной из одного вида в другой файл

Как бы мне это сделать?

Спасибо,

+0

не могли бы вы подробнее? Ваш код, ваш шаблон? – vtproduction

+0

В представлении AI есть переменная, содержащая точки, и я анимация этого пути из тех точек в представлении B. Но мне нужно получить доступ к переменной в представлении A, которая имеет точки для анимации в представлении B. – Eddev

+0

, какой вид вы используете для A и B ?? –

ответ

1

Там нет никакого волшебного способа,

ViewA va = ...; 
ViewB vb = ...; 
... 
vb.setData(va.getData()); 

Вы должны установить данные из ViewA в ViewB. Кроме того, вы можете использовать шаблон слушателя, чтобы ViewA уведомить ViewB при изменении данных,

interface ViewADataListener { 
    void onDataChanged(Data d); 
} 

class ViewB implements ViewADataListener { ... } 

ViewA va = ...; 
ViewB vb = ...; 
... 
va.setDataChangedListener(vb); 

Тогда где-то в реализации ViewA «s он должен вызвать метод слушателя на ViewB.

1
  1. Использование интерфейса.

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        ViewA viewA = new ViewA(); 
        ViewB viewB = new ViewB(); 
        viewB.setViewA(viewA); 
    } 
    
    class ViewA { 
        private Object mData; 
    
        public Object getData() { 
         return mData; 
        } 
    } 
    
    class ViewB { 
        ViewA mViewA; 
    
        public void setViewA(ViewA viewA) { 
         mViewA = viewA; 
        } 
    
        private void test() { 
         if (mViewA != null) { 
          Object obj = mViewA.getData(); 
         } 
        } 
    } 
    
  2. Make View A в качестве переменной в окне просмотра B.

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
    
        ViewA viewA = new ViewA(); 
        ViewB viewB = new ViewB(); 
        viewB.setCallBack(viewA.getCallBack()); 
    } 
    
    interface DataCallBack { 
        Object getData(); 
    } 
    
    class ViewA { 
    
        private Object mData; 
    
        private DataCallBack mCallBack = new DataCallBack() { 
         @Override 
         public Object getData() { 
          return mData; 
         } 
        }; 
    
        public DataCallBack getCallBack() { 
         return mCallBack; 
        } 
    } 
    
    class ViewB { 
        DataCallBack mDataCallBack; 
    
        public void setCallBack(DataCallBack callBack) { 
         mDataCallBack = callBack; 
        } 
    
        private void test() { 
         if (mDataCallBack != null) { 
          Object obj = mDataCallBack.getData(); 
         } 
        } 
    } 
    

3./4./5 ....

Просто FYR. Для существует тысячи способов решить вашу проблему.

Смежные вопросы