Я использую predefined button
для генерации new buttons
, когда нажимаем на него. После генерации новых кнопок я хотел бы change their label
за то, что я использую EditText
, определенный в диалоговом окне, которое выдает onLongClick
новых сгенерированных кнопок. Чтобы сохранить все сгенерированные кнопки и их ярлык, я использую Shared preferences
. Но проблема в том, что после перезапуска все сгенерированные кнопки имеют на них одну и ту же метку.Динамически созданные кнопки имеют одну и ту же метку после перезапуска приложения?
code in mainactivity-----
SharedPreferences prefs=null;
String key;
int btncount = 15;
code in onCreate method----
prefs = PreferenceManager.getDefaultSharedPreferences(this);
btncount=prefs.getInt("count", 0);
LinearLayout ll = (LinearLayout)findViewById(R.id.layout1);
for(int i=0;i<btncount;i++)
{
LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
final Button myButton = new Button(this);
myButton.getId();
myButton.setText(prefs.getString(key+myButton.getId(),"New"));
myButton.setOnLongClickListener(new OnLongClickListener() {
public boolean onLongClick(View arg0)
{
AlertDialog lbldialog = new AlertDialog.Builder(context).create();
final EditText input = new EditText(MainActivity.this);
lbldialog.setView(input);
lbldialog.setButton(DialogInterface.BUTTON_POSITIVE, "Change", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which)
{
myButton.setText(input.getText());
Editor edit = prefs.edit();
edit.putString(key+myButton.getId(), myButton.getText().toString());
edit.commit();
}
});
lbldialog.show();
return true;
}
});
ll.addView(myButton, lp);}
Code to create button-----
if(v == btnaddnew)
{
final Button btn1 = new Button(this);
btn1.setText("New");
btn1.setId(btncount);
btn1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v){
reportDialog(btn1.getText().toString());
}
});
btn1.setOnLongClickListener(new OnLongClickListener() {
public boolean onLongClick(View arg0) {
AlertDialog lbldialog = new AlertDialog.Builder(context).create();
final EditText input = new EditText(MainActivity.this);
lbldialog.setView(input);
lbldialog.setButton(DialogInterface.BUTTON_POSITIVE, "Change",
new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
btn1.setText(input.getText());
Editor edit = prefs.edit();
edit.putString(key+btn1.getId(), btn1.getText().toString());
edit.commit();
}
});
lbldialog.show();
return true;
}
});
LinearLayout ll = (LinearLayout)findViewById(R.id.layout1);
LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
ll.addView(btn1, lp);
btncount++;
Editor editor = prefs.edit();
editor.putInt("count", btncount);
editor.commit();
}
Проверьте это один раз и предоставьте мне с соответствующими правок, как я новичок в андроид, и я не имею, что много знаний
Вы всегда создаете свою кнопку с помощью метки 'new', вы должны сначала проверить свой' SP', а если он пуст, тогда создайте с помощью 'new' else вам нужно установить метку в значение, которое хранится в' SP' –
@Shayan pourvatan first I «Я создаю новые кнопки с надписью« new »после этого, я меняю ярлык на test1, test2, test3 ...... но после перезагрузки всех кнопок есть метка как test3 –
Дублирующий вопрос [http://stackoverflow.com/questions/21577082/buttons-generated-on-runtime-have-same-label-after-restarting-app] и [http://stackoverflow.com/questions/21620270/shared-preferences-returning-last-value-after -restarting] тоже то же самое – Uttam