我希望MyView
可以与MyActivity
共享数据,因此我需要他们可以将数据放入Context
并从Context
获取数据,如何做到这一点?
class MyView extends Button {
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
put data into context ...
get data from context ...
}
}
class MyActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.xxx);
put data into context ...
get data from context ...
}
}
我知道Activity
是Context
的一个实例,Context
的construtor中有View
。所以我认为{{1} } {}}} {}}} {}} {}}从上下文获取数据'。我希望Activity
成为View
,View
和Context
同时发送并发送电子邮件。我认为在Activity
中有一些方法,例如Context
和email box
,但我找不到。
答案 0 :(得分:0)
您可以通过在活动类中调用getApplicationContext()
,getContext()
,getBaseContext()
或此方法来获取上下文。
答案 1 :(得分:0)
@ malrok44的想法给了我灵感。这是我的解决方案。
interface Interacton {
void putData(key, val)
object getData(key)
}
class MyActivity extends Activity implements Interacton {
public void oncreate() {
getData(xx)
putData(xx,yy)
}
private Map map = new HashMap
public void putData(key, val) {
map.put(key, val);
}
public object getData(key) {
return map.get(key)
}
}
class MyView extends Button {
public MyView(Context context) {
Interaction ctx = (Interaction)context;
ctx.put(xx,yy)
ctx.get(xx)
}
}
我认为ThreadLocal
没问题,但我不确定它是否安全?