如何在 android 的自定义视图中访问按钮的 setOnClickListener?
How to access setOnClickListener of a button in custom view in android?
我是 Android 开发的新手,这是我的第一个 Android 应用程序。
这是我的 MainActivity 布局的样子:
这是 MainActivity 的组件树
gridView 是一个自定义视图,我在其中有一个 resetGrid
函数,看起来像这样
public class GridView extends View {
resetGird(){
// stuff that resets grid;
}
}
这是我面临的问题:
我可以在MainActivity
文件中访问重置按钮的setOnClickListener
,但在resetGrid
函数所在的GridView
文件中不能。
resetButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(PathFind.this, "reset", Toast.LENGTH_SHORT).show();
}
});
我还想访问 GridView
文件中重置按钮的 setOnClickListener
,并在按下按钮时调用 resetGrid
函数。
不仅如此,我的计划是使用图中列出的所有控件(开始按钮、对角复选框、速度滑块)来控制 GridView。但我似乎无法找到一种方法来做到这一点。
main_activity 中提供了所有控件,但我无法在 GridView 中使用它们。
你是对的。
“技巧”是将 GridView 的实例保存在 MainActivity 变量中,然后使用它对 call/execute GridView 方法(如“resetGrid()”)的引用。
ResetButton 存在于 GridView 外部,因此从 INSIDE GridView extended class.
引用“resetButton”是一种不好的做法
伪代码:
class GridView extends View {
public void resetGrid() {
...do reset stuff here...
}
}
class MainActivity extends Activity {
private GridView mGridView;
private Button mResetButton;
public onCreateView() {
...
mGridView = findViewById(R.id.gridview);
mResetButton = findViewById(R.id.resetButton);
resetButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mGridView.resetGrid();
}
});
}
}
我是 Android 开发的新手,这是我的第一个 Android 应用程序。
这是我的 MainActivity 布局的样子:
这是 MainActivity 的组件树
gridView 是一个自定义视图,我在其中有一个 resetGrid
函数,看起来像这样
public class GridView extends View {
resetGird(){
// stuff that resets grid;
}
}
这是我面临的问题:
我可以在MainActivity
文件中访问重置按钮的setOnClickListener
,但在resetGrid
函数所在的GridView
文件中不能。
resetButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(PathFind.this, "reset", Toast.LENGTH_SHORT).show();
}
});
我还想访问 GridView
文件中重置按钮的 setOnClickListener
,并在按下按钮时调用 resetGrid
函数。
不仅如此,我的计划是使用图中列出的所有控件(开始按钮、对角复选框、速度滑块)来控制 GridView。但我似乎无法找到一种方法来做到这一点。 main_activity 中提供了所有控件,但我无法在 GridView 中使用它们。
你是对的。 “技巧”是将 GridView 的实例保存在 MainActivity 变量中,然后使用它对 call/execute GridView 方法(如“resetGrid()”)的引用。
ResetButton 存在于 GridView 外部,因此从 INSIDE GridView extended class.
引用“resetButton”是一种不好的做法伪代码:
class GridView extends View {
public void resetGrid() {
...do reset stuff here...
}
}
class MainActivity extends Activity {
private GridView mGridView;
private Button mResetButton;
public onCreateView() {
...
mGridView = findViewById(R.id.gridview);
mResetButton = findViewById(R.id.resetButton);
resetButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mGridView.resetGrid();
}
});
}
}