动态生成按钮并使用共享首选项存储它们。创建按钮后,使用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);
答案 0 :(得分:0)
您将最后一个按钮名称设置为所有按钮的名称:
edit.putString("key",btn1.getText().toString());
因此您使用“键”保存所有内容,因此您使用上次保存的键来显示所有按钮。
您可以做的是以下内容:
1st - 使用数据库保存按钮的名称。
第二 - 如果您的应用API大于11
使用SharedPreferences.Editor putStringSet(String key, Set<String> values)
在这里,您将提供一个键,一个多个值,因此您可以保存所有按钮名称
请给我反馈意见。
希望有所帮助