查看和Activity如何共享android.content.Context中的数据?
View and Activity how to share data in android.content.Context?
我希望 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
的一个实例,View
的construtor.So中有Context
我想当Activity
开始了,有时候View
是事件触发的,所以View
在Context
里面放了一些数据,然后有时候Activity
是事件触发的,所以无法从 'Context' 获取数据。我希望 Context
成为 email box
,View
和 Activity
都可以从中发送和接收电子邮件。我认为 Context
中有一些方法,例如 put(key, val)
和 get(key)
,但我没有找到。
您可以通过调用 getApplicationContext()
、getContext()
、getBaseContext()
或在 activity class 中调用它来获取上下文。
@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
可以,但我不确定它是否安全?
我希望 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
的一个实例,View
的construtor.So中有Context
我想当Activity
开始了,有时候View
是事件触发的,所以View
在Context
里面放了一些数据,然后有时候Activity
是事件触发的,所以无法从 'Context' 获取数据。我希望 Context
成为 email box
,View
和 Activity
都可以从中发送和接收电子邮件。我认为 Context
中有一些方法,例如 put(key, val)
和 get(key)
,但我没有找到。
您可以通过调用 getApplicationContext()
、getContext()
、getBaseContext()
或在 activity class 中调用它来获取上下文。
@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
可以,但我不确定它是否安全?