更改按钮标签并添加侦听器

时间:2014-01-16 07:37:35

标签: android button dialog

我正在使用一个按钮在运行时添加新按钮,还需要更改按钮标签,但它只显示预定义。有人告诉我如何更改新添加的按钮标签。我的代码添加了新按钮:

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布局

1 个答案:

答案 0 :(得分:0)

如果我没有错,当你向布局添加一个按钮时,“myButton”变量是无用的,你可以做的是为你的按钮创建一个新的id:

myButton.setId(id); //id is any positive number

如果您想以任何方式更改按钮(例如文本),请执行以下操作:

Button myButton = (Button) findViewById(id);
myButton.setText("My Text");

确保每个动态创建的按钮具有不同的ID

如果您希望它有一个监听器,您可以在将按钮添加到布局之前,或者当您更改按钮时(使用findViewById)

如果你的活动有很多动态变化,我建议动态制作所有内容,包括布局,在我看来,这对你来说更容易