如何使用 getResources().getIdentifier 获取 Button id?
How to use getResources().getIdentifier to get a Button id?
我正在尝试制作一个简单的应用程序。
我有一个 table,其中一行有七个按钮。
我知道我不需要二维数组,但我想使用它。
所以我以后可以很容易地扩展它。
我正在使用
int resID = getResources().getIdentifier("button" + i + h, "button", getPackageName());
尝试从按钮获取资源 ID。
我的按钮被命名为“button00、button01、button02 等(这正是 R.java 中的名称)。
数字分别代表行和列。
我以前见过有人用过这个,但出于某种原因我永远无法让它工作。
这是我的灯光代码class
public class lights extends Activity implements OnClickListener {
public int numRows;
public int numCol;
public lights(int rows, int col) {
numRows = rows;
numCol = col;
}
public void createButtonListeners(Button[][] button) {
for (int i = 0; i < numRows; i++) {
for (int h = 0; h < numCol; h++) {
int resID = getResources().getIdentifier("button" + i + h, "button", getPackageName());
button[i][h] = (Button) findViewById(resID);
button[i][h].setOnClickListener((View.OnClickListener) this);
Toast.makeText(getBaseContext(), "Made listener", Toast.LENGTH_LONG).show();
}
}
}
public void reset(Array buttons[][]) {
for (int r = 0; r < numRows; r++) {
for (int c = 0; c < numCol; c++) {
//havnt got this far
}
}
}
public int wasButtonPressed() {
for (int row = 0; row < numRows; row++) {
}
return 0;
}
@Override
public void onClick(DialogInterface dialog, int which) {
}}
Main_Activity
代码
public class MainActivity extends Activity implements View.OnClickListener {
lights mlights = new lights(1, 7);
Button Button[][] = new Button[mlights.numRows][mlights.numCol];
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mlights.createButtonListeners(Button);
}
@Override
public void onClick(View v) {
}}
我输入代码时没有错误,但它没有 运行。
请以任何可能的方式纠正我
如果你想获取一个id,第二个参数应该是"id"
。
您正在尝试获取 R.id
值,而不是 R.button
值,因为它们不存在
你还在你的灯上实现了错误的点击监听器 Activity(无论如何都不应该扩展 Activity,但这与你的问题无关......如果你当前的代码不起作用)
提示:试试这个 public lights(Context c, int rows, int col)
并使用 c.getResources
使用那个 Context
来创建你的资源,或者可能是你从 Activity(因为这是唯一可以调用 findViewById
的地方)
我正在尝试制作一个简单的应用程序。
我有一个 table,其中一行有七个按钮。
我知道我不需要二维数组,但我想使用它。
所以我以后可以很容易地扩展它。
我正在使用
int resID = getResources().getIdentifier("button" + i + h, "button", getPackageName());
尝试从按钮获取资源 ID。
我的按钮被命名为“button00、button01、button02 等(这正是 R.java 中的名称)。
数字分别代表行和列。
我以前见过有人用过这个,但出于某种原因我永远无法让它工作。
这是我的灯光代码class
public class lights extends Activity implements OnClickListener {
public int numRows;
public int numCol;
public lights(int rows, int col) {
numRows = rows;
numCol = col;
}
public void createButtonListeners(Button[][] button) {
for (int i = 0; i < numRows; i++) {
for (int h = 0; h < numCol; h++) {
int resID = getResources().getIdentifier("button" + i + h, "button", getPackageName());
button[i][h] = (Button) findViewById(resID);
button[i][h].setOnClickListener((View.OnClickListener) this);
Toast.makeText(getBaseContext(), "Made listener", Toast.LENGTH_LONG).show();
}
}
}
public void reset(Array buttons[][]) {
for (int r = 0; r < numRows; r++) {
for (int c = 0; c < numCol; c++) {
//havnt got this far
}
}
}
public int wasButtonPressed() {
for (int row = 0; row < numRows; row++) {
}
return 0;
}
@Override
public void onClick(DialogInterface dialog, int which) {
}}
Main_Activity
代码public class MainActivity extends Activity implements View.OnClickListener {
lights mlights = new lights(1, 7);
Button Button[][] = new Button[mlights.numRows][mlights.numCol];
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mlights.createButtonListeners(Button);
}
@Override
public void onClick(View v) {
}}
我输入代码时没有错误,但它没有 运行。
请以任何可能的方式纠正我
如果你想获取一个id,第二个参数应该是"id"
。
您正在尝试获取 R.id
值,而不是 R.button
值,因为它们不存在
你还在你的灯上实现了错误的点击监听器 Activity(无论如何都不应该扩展 Activity,但这与你的问题无关......如果你当前的代码不起作用)
提示:试试这个 public lights(Context c, int rows, int col)
并使用 c.getResources
使用那个 Context
来创建你的资源,或者可能是你从 Activity(因为这是唯一可以调用 findViewById
的地方)