如何在运行时更改按钮标签?

时间:2014-02-03 11:00:37

标签: android button

我正在使用按钮在运行时创建新按钮,但创建的新按钮具有预定义标签,即btn1.setText("New");。有没有什么方法可以让一旦在运行时创建的按钮标签可以修改或更改为其他标签,而不是它可以是“点击”,“鼠标”,“服装”但是应用程序在跑。 用于创建按钮的代码:

if(v == add){
        Button btn1 = new Button(this);
        btn1.setText("New");
        btn1.setId(34);     
        btn1.setOnClickListener(this);
        btn1.setOnClickListener(new OnClickListener () {
            @Override
            public void onClick(View v){
                mDialog();
            }
        });
        LinearLayout ll = (LinearLayout)findViewById(R.id.layout1);
        LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);       
        ll.addView(btn1, lp);
        count++;
        Editor editor = prefs.edit();
        editor.putInt("count", count);
        editor.commit();
    }

我正在使用共享首选项来存储以前创建的按钮

prefs = PreferenceManager.getDefaultSharedPreferences(this);
    count=prefs.getInt("count", 0);
    LinearLayout ll = (LinearLayout)findViewById(R.id.layout1);
    for(i=0;i<count;i++){
        LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);       
        final Button myButton = new Button(this);
        myButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v){
                mDialog(myButton.getText().toString());
            }
        });
        myButton.setId(34);
        myButton.setText("New");
        myButton.setOnLongClickListener(new OnLongClickListener() {
            public boolean onLongClick(View arg0) {
                AlertDialog mdialog = new AlertDialog.Builder(context).create();
                mdialog.setTitle("Change Button Label");
                mdialog.setIcon(android.R.drawable.ic_dialog_info); 
                mdialog.setMessage("Enter new Button label  to change");
                final EditText input = new EditText(MainActivity.this);

                mdialog.setView(input);
                mdialog.setButton(DialogInterface.BUTTON_POSITIVE, "Change",
                        new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) 
                    {
                        myButton.setText(input.getText());
                    }
                });

                mdialog.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel", 
                        new DialogInterface.OnClickListener() {

                                @Override
                                public void onClick(DialogInterface dialog, int which) {
                                    Toast.makeText(getApplicationContext(), "Button Label not Changed",Toast.LENGTH_SHORT).show();
                                    dialog.dismiss();

                                }
                            });
                mdialog.show(); 

                return true;    // <- set to true
            }
        });
        ll.addView(myButton, lp);
    }

2 个答案:

答案 0 :(得分:2)

你只需要:

mButton.setText("WhatEver");

您无需再次将Button添加到布局

如果要在应用程序关闭时始终显示文本,请保存文本,您必须使用共享首选项,如:

SharedPreference preference = PreferenceManager.getDefaultSharedPreferece(this);

现在,如果用户更改了文本,请执行此操作

Editor edit = preference.edit();
edit.putString("key",mButton.getText().toString());
edit.commit();

现在,您已使用键“key”

将字符串保存在首选项中

现在使用以下方法删除将Button文本设置为“New”的行:

mButton.setText(preference.getString("key","New");

多数民众赞成:)

答案 1 :(得分:0)

将标签名称设置为TextView的动态方式

String[] buttonName = {"new","click","mouse","clothing"};

mButton.setText(buttonName[1]);  // here you can replace 1 with 0 or 1 or 2 or 3 as per your requirement.