动态生成的按钮具有相同的标签?

时间:2014-02-05 07:14:06

标签: android button sharedpreferences dynamically-generated

动态生成按钮并使用共享首选项存储它们。创建按钮后,使用EditText更改标签,然后按myButton.setText(input.getText());设置按钮标签。还使用另一个Shared Preference to store their label。 代码创建按钮:

final Button btn1 = new Button(this);
        btn1.setText("New");
        btn1.getId();       
        btn1.setOnClickListener(this);
        btn1.setOnClickListener(new OnClickListener () {
            @Override
            public void onClick(View v){
                mDialog(btn1.getText().toString());
            }
        });
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();
btn1.setOnLongClickListener(new OnLongClickListener() {
            public boolean onLongClick(View arg0) {
final EditText input = new EditText(MainActivity.this);
                mdialog.setView(input);

使用按钮保存标签更改

btn1.setText(input.getText());
                        Editor edit = preference.edit();
                        edit.putString("key",btn1.getText().toString());
                        edit.commit();

oncreate方法中定义的Shared Preference代码

preference = PreferenceManager.getDefaultSharedPreferences(this);
    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.getId();
        myButton.setText(preference.getString("key","New"));
new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) 
                    {
                        myButton.setText(input.getText());
                        Editor edit = preference.edit();
                        edit.putString("key", myButton.getText().toString());
                        edit.commit();
                    }
                });
ll.addView(myButton, lp);

1 个答案:

答案 0 :(得分:0)

您将最后一个按钮名称设置为所有按钮的名称:

edit.putString("key",btn1.getText().toString());

因此您使用“键”保存所有内容,因此您使用上次保存的键来显示所有按钮。

您可以做的是以下内容:

1st - 使用数据库保存按钮的名称。

第二 - 如果您的应用API大于11

使用SharedPreferences.Editor putStringSet(String key, Set<String> values) 在这里,您将提供一个键,一个多个值,因此您可以保存所有按钮名称

请给我反馈意见。

希望有所帮助