查看和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 ... 
     } 
}

我知道ActivityContext的一个实例,View的construtor.So中有Context我想当Activity开始了,有时候View是事件触发的,所以ViewContext里面放了一些数据,然后有时候Activity是事件触发的,所以无法从 'Context' 获取数据。我希望 Context 成为 email boxViewActivity 都可以从中发送和接收电子邮件。我认为 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 可以,但我不确定它是否安全?