我有Main_Activity.class 文件。我在那里定义了一个自定义函数 myFunction() 。在此函数中,我想调用外部定义的自定义 OnClickListener ,它将递归调用该函数。
在Main_Activity中,按钮定义为
private Button button;
.
.
button = (Button)findViewById(R.id.button);
.
.
我的myFunction()是在Main_Activity.class内部定义的。在此函数内定义了按钮的 OnClickListener。通过这个 OnClickListener,我可以轻松调用 myFunction()。
private void myFunction(){
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
myFunction();
}
});
}
但我想为按钮定义一个自定义 MyClickListenerClass 并从该外部类调用 myFunction()。
这怎么可能?
最佳答案
试试这个,
Activity :
public class Main_Activity extends Activity
{
Button button;
MainActivity act;
MyClickListener listener;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.button1);
listener = new MyClickListener(this);
myFunction();
}
public void myFunction()
{
button.setOnClickListener(listener);
Log.i("Fun clicked from", "sdfnd");
}
}
和类别:
public class MyClickListener implements OnClickListener
{
MainActivity act;
public MyClickListener(MainActivity act) {
this.act=act;
}
@Override
public void onClick(View v)
{
act.myFunction();
}
}
关于java - 从自定义 OnClickListener 调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17114396/