[英]calling an activity method from custom onClickListener class
我試圖從自定義onClickListener
對象調用保留在MainActivity類中的方法。 可變范圍存在問題。
所以在我的MainActivity中,我有:
Button resetButton = (Button) findViewById(R.id.ResetButton);
View.OnClickListener myListener = new MyListener(GameBoard, width);
resetButton.setOnClickListener(myListener);
這是myListener類的樣子:
public class MyListener implements View.OnClickListener
{
private static MainActivity mainActivity;
public MyListener(MainActivity mainActivity) {
this.mainActivity = mainActivity;
}
@Override
public void onClick(View v) {
mainActivity.myMethod();
}
}
和方法也在MainActivity中使用一些MainActivity實例變量:
public void myMethod()
{
InstanceVariable++; // for example
}
然后,在我通過單擊resetButton傳遞給myListener構造函數的mainActivity對象上調用myMethod時,出現有關MainActivity InstanceVariable
作用域的錯誤。 我是android編程的初學者,所以我無法完全理解它的來源。
當我將此InstanceVariable
傳遞給myListener object
constructor
時,此錯誤消失。 我認為應該有一種更簡單的方法。
改成:
public void myMethod() {
mainActivity.instanceVariable++; // for example
}
instancevariable在MyListener類中不可見,您必須指出它在mainActivity對象中。
如果您的instanceVariable是私有的,請在mainActivity中創建getter函數:
public void getInstanceVariable() {
return this.instanceVariable
}
並以這種方式使用它:
public void myMethod() {
mainActivity.setInstanceVariable(mainActivity.getInstanceVariable()+1); // for example
}
使InstanceVariable符合
public static int InstanceVariable;
並使用它
@Override
public void onClick(View v) {
MainActivity.InstanceVariable++;
}
不要為少於8行的函數創建方法
嘗試這個 :
使您的聽眾成為您活動的內在類,然后:
class MyListener implements View.OnClickListener {
public MyListener() {
}
@Override
public void onClick(View v) {
MainActivity.this.myMethod();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.