我有一个主要的Activity类,其中包含大量的代码/数据。所以我想让它简短易读,所以我想创建一个.java文件,根据要求处理一些功能。喜欢
Button b=(Button)findviewById(R.id.b1);
b.setOnClickListener(this);
并显示非活动类的Toast。 所以我的问题是如何在非活动中处理/初始化按钮? 我们可以从“从活动传递上下文到非活动类”获取ID吗?
答案 0 :(得分:3)
试试这是为我工作。也可以帮到你!
<强> NonActivityClass:强>
public class NonActivityClass {
Context context;
View v;
public NonActivityClass(Context context, View v) {
this.context = context;
this.v = v;
}
public void test() {
Button btn = (Button) v.findViewById(R.id.btn);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(context, "Hello I am inside Non Activity Class",
1).show();
}
});
}
}
<强> MainActivity:强>
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
View v = getLayoutInflater().inflate(R.layout.activity_main, null);
setContentView(v);
NonActivityClass nac = new NonActivityClass(MainActivity.this, v);
nac.test();
}
}
答案 1 :(得分:0)
是的,你可以通过在你的其他java类中实现OnClickListener并在你的活动类中调用它来做到这一点吗
Button b=(Button)findviewById(R.id.b1);
b.setOnClickListener(new NonActivityClass(this));
我们将活动上下文传递给NonActivityClass,这将使您可以访问NonActivityClass中的UI组件,但请记住这可能会导致内存泄漏;
实现OnClickListener,如:
public class NonActivityClass implements OnClickListener
{
void onClick(View oView)
{
// Do your stuff here
}
}
答案 2 :(得分:0)
您可以在主类中实现onclick侦听器但是使用接口来外部化其他类中的侦听器内容。
例如:
创建一个包含构造函数,几个方法和对象的类ManageClick.java。
属性
public OnClickListenerCustom _onClickListenerCustom;
和界面
Interface OnClickListenerCustom{
public void onclick();
public void onItemClick();
}
和另一种方法,如setOnClickListenerCustom:
public void setOnClickListenerCustom(OnClickListenerCustom listener){
this._onClickListenerCustom = listener;
}
在主类MainActivity.java中实现onclick()方法,在oncreate中设置监听器:
public ManageClick _clickManager;
_clickManager = new ManageClick();
_clickManager.setOnClickListener((OnClickListenerCustom) this.MainActivity);
要完成onclick方法,您只需要调用
_clickManager.onClick() or _clickManager.onItemClick()