我有两个视图,我想访问存储在视图A中的变量中的数据,并在视图B中传递它。
我该怎么做?
谢谢,
答案 0 :(得分: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
的实现中,它必须在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();
}
}
}
在视图B中将视图A视为变量。
@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。 因为存在数千种解决问题的方法。