如这句:Button B1 = (Button) findViewById(R.id.btn); 在点击事件中如何获取按钮的名字
“B1",而不是id:"btn”?
得到id以后根据id再取名称
int intialResID = getResources().getIdentifier(initialCbID, "id", context.getApplicationContext().getPackageName());
android获取Button文本 从一个按钮开关中获取文本
在程序里可以从一个按钮中获取文本
String buttonText = button.getText();
也可以从按钮开关中获取id
int buttinID = view.getId();
但是如何从按钮开关中获取文本呢?这俩个怎么结合呢?
在onClick()中传递的视图就是你要找的button,需要强制转换一下。
public void onClick(View view) {
// 从按钮开关中获取文本
Button b = (Button)v;
String buttonText = b.getText().toString();
}
可以这样:
B1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
而如果这样就只能用id了:
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.add_saoma:
Intent i = new Intent(AddActivity.this, CaptureActivity.class);
startActivityForResult(i, REQUEST_QR_CODE);
break;
case R.id.add_back:
finish();
break;
case R.id.add_cancel:
finish();
break;
}
}
增加下面的代码,用的时候:
View v = findViewByName("控件名");
public View getViewByName(String name) {
return findViewById(getRootView(this), name);
}
private static View getRootView(Activity context) {
return ((ViewGroup) context.findViewById(android.R.id.content)).getChildAt(0);
}
protected View findViewByName(ViewGroup viewGroup,String name) {
for (int i = 0; i < viewGroup.getChildCount(); i++) {
View inner = viewGroup.getChildAt(i);
if (( inner instance of Button) && ((Button)inner).getText.toString().equals(name)) {
return inner;
} else if (inner instanceof ViewGroup) {
if (((ViewGroup) inner).getChildCount() == 0)
continue;
View returnView = findViewById((ViewGroup) inner, id);
if (returnView == null)
continue;
return returnView;
}
}
return null;
}
单击事件要继承onClick()方法,该方法中有view,使用,view.getId()获取当前单击view的ID