我正在使用一个按钮在运行时添加新按钮,还需要更改按钮标签,但它只显示预定义。有人告诉我如何更改新添加的按钮标签。我的代码添加了新按钮:
addnew = (Button)findViewById(R.id.btnaddnew);
addnew.setOnClickListener(this);
public void onClick(View v) {
if(v == addnew)
{
Button myButton = new Button(this);
myButton.setText("New Button");
LinearLayout ll = (LinearLayout)findViewById(R.id.layout1);
LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
ll.addView(myButton, lp);
count++;
Editor editor = prefs.edit();
editor.putInt("count", count);
editor.commit();
}
}
要存储创建的按钮,我在onCreate中使用SharedPreferences:
prefs = PreferenceManager.getDefaultSharedPreferences(this);
count=prefs.getInt("count", 0);
for(int i=0;i<count;i++){
Button myButton = new Button(this);
myButton.setText("New Button");
myButton.setId(count);
LinearLayout ll = (LinearLayout)findViewById(R.id.layout1);
LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
ll.addView(myButton, lp);
}
我们也可以在添加的按钮上应用onClickListener,就像我的其他按钮一样。代码:
bdialog = (Button)findViewById(R.id.btndialog);
property.setOnClickListener(this);
public void onClick(View v) {
if(v == bdialog)
{
final Dialog dialog = new Dialog(this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.custom_alert_layout);
Button report = (Button) dialog.findViewById(R.id.btn_Report);
report.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Toast.makeText(getApplicationContext(),"You clicked on Report", Toast.LENGTH_SHORT).show();
dialog.dismiss();
}
});
Button cancel = (Button) dialog.findViewById(R.id.btn_Cancel);
cancel.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Toast.makeText(getApplicationContext(),"Reverting Changes", Toast.LENGTH_SHORT).show();
dialog.dismiss();
}
});
// Showing Alert Dialog
dialog.show();
}
我正在为对话框使用预定义的xml布局
答案 0 :(得分:0)
如果我没有错,当你向布局添加一个按钮时,“myButton”变量是无用的,你可以做的是为你的按钮创建一个新的id:
myButton.setId(id); //id is any positive number
如果您想以任何方式更改按钮(例如文本),请执行以下操作:
Button myButton = (Button) findViewById(id);
myButton.setText("My Text");
确保每个动态创建的按钮具有不同的ID
如果您希望它有一个监听器,您可以在将按钮添加到布局之前,或者当您更改按钮时(使用findViewById)
如果你的活动有很多动态变化,我建议动态制作所有内容,包括布局,在我看来,这对你来说更容易