在活动和班级之间共享数据

时间:2014-10-11 23:49:16

标签: android

我有一个包含服务类MyActivity的活动MyService。 我希望该服务将String数据发送到活动,然后使用此数据创建button
this发布后,我在活动中创建了static方法 问题当然是我不能在静态上下文中使用this

public class MyActivity extends Activity {


    private MyService myService;


    public void onCreate(Bundle savedInstanceState) {

        setContentView(R.layout.main);
        myService = new MyService();

    }


    public static void connectMethod (String buttonName) {

        Button btn = new Button(this); // error
        btn.setId(i);
        final int buttonID = btn.getId();
        btn.setText(buttonName + buttonID);

    }
}





public class MyService {

    ...

    private void showButton (String data) {
        MyActivity.connectedMethod(data);
    }
}

1 个答案:

答案 0 :(得分:0)

避免error的两种可能的解决方案:

  1. public static void connectMethod (Context context, String buttonName) {
    
        Button btn = new Button(context); 
        btn.setId(i);
        final int buttonID = btn.getId();
        btn.setText(buttonName + buttonID);
    
    }
    
    // ...
    
    public class MyService {
    
        private Context context;
    
        public MyService(Context context) {
            this.context = context;
        }
        ...
    
        private void showButton (String data) {
            MyActivity.connectedMethod(context, data);
        }
     }
    
  2. 或者创建一个静态类字段:private static Context context;

    public static void connectMethod (String buttonName) {
    
        Button btn = new Button(context); 
        btn.setId(i);
        final int buttonID = btn.getId();
        btn.setText(buttonName + buttonID);
    
    }