从另一个类调用动态按钮

我是java / Android的新手,我想传递我定义了我的按钮属性的方法。 并且该方法是在另一个不能实现Activity的类中编写的。

ex class ViewProvider extends xyz { public Button getButton(){ Button one=new Button(); one.setText("abc"); one.setTypeface(Typeface.DEFAULT_BOLD); //and other properties like color,Gravity ect return one } } Class calcu extends Activity{ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.app_list); ViewProvider v=new ViewProvider(); RelativeLayout relativelayout = new RelativeLayout(this); relativelayout.addView(v.getButton); setContentView(relativelayout); } 

但我得到一个错误

只需创建一个Activity数据类型并通过构造函数初始化它,如下所示

 class ViewProvider extends xyz Activity activity; { public ViewProvider(Activity activity, JSONObject json) { this.activity = activity; } public Button getButton(activity){ Button one=new Button(); one.setText("abc"); return one } 

然后在onCreate上调用如下方法(Bundle savedInstanceState)

 ViewProvider v=new ViewProvider(this); RelativeLayout relativelayout = new RelativeLayout(this); relativelayout.addView(v.getButton); setContentView(relativelayout); 

如果你看一下按钮@的构造函数,你就有错误的参数。

http://developer.android.com/reference/android/widget/Button.html

 Button(Context context) Button(Context context, AttributeSet attrs) Button(Context context, AttributeSet attrs, int defStyle) 

所有这三个都将上下文作为一个参数。

我建议你阅读文档

http://developer.android.com/guide/topics/ui/declaring-layout.html

你也有两次setContentView ,这是不必要的。

将按钮初始化为活动本身

  Class calcu extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); RelativeLayout relativelayout = new RelativeLayout(this); Button one=new Button(this); one.setText("abc"); relativelayout.addView(one); setContentView(relativelayout); } }