查看和活动如何在android.content.Context中共享数据?

时间:2016-02-25 14:36:34

标签: android android-layout android-custom-view android-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的一个实例,Context的construtor中有View。所以我认为{{1} } {}}} {}}} {}} {}}从上下文获取数据'。我希望Activity成为ViewViewContext同时发送并发送电子邮件。我认为在Activity中有一些方法,例如Contextemail box,但我找不到。

2 个答案:

答案 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没问题,但我不确定它是否安全?