2016-11-29 4 views
1

Я хочу пригласить пользователя его имя в AlertDialogue, сохранить его имя в разделе «Общие преференции» и установить его имя в текстовом виде, поэтому, когда он вернется, он сможет увидеть его имя. Пока у меня есть диалог, но я не уверен, что он сохраняется, потому что текстовое представление показывает что-то вроде «Android Widget EditText (9o179 ... и т. Д.)« Что я делаю неправильно? Код:Android: сохранение и чтение данных с пользовательского ввода?

String name; //global 
TextView user; 

OnCreate:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    buttonCreate(); 
    preferences(); 
    togglePlay(); 
} 

TogglePlay Метод:

public void togglePlay() { 
    init.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 

     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 

      if (isChecked) { 
       KeysOn(); 

      } else { 

       KeysOff(); 
      } 
     } 
    }); 
} 

public void KeysOn() { 
    Toast.makeText(getApplicationContext(), getString(R.string.ToastToggleOn), Toast.LENGTH_SHORT).show(); 
    user.setText(name); 
    //etc 
} 

Метод предпочтения называется в OnCreate:

public void preferences(){ 


    SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); 


    name= settings.getString("name",name); 
    saveName(); 

    data = settings.getString("stage", "Indoors"); 
    String backGround = settings.getString("stage", "Indoors"); 

    if (backGround.equals("Indoors")) { 
     Picasso.with(this).load(R.drawable.shocked_crowd).fit().centerCrop().into(palco); 
     Toast.makeText(getApplicationContext(), getString(R.string.stageIndoors), Toast.LENGTH_LONG).show(); 


    } 
    if (backGround.equals("Street")) { 
     Picasso.with(this).load(R.drawable.coins).fit().centerCrop().into(palco); 
     Toast.makeText(getApplicationContext(), getString(R.string.stageStreet), Toast.LENGTH_LONG).show(); 
    } 
} 

EDIT: отсутствует код:

public void popUp(){ 

    AlertDialog.Builder questionName = new AlertDialog.Builder(this); 

    questionName.setTitle(" Enter your name "); 
    EditText input=new EditText(this); 
    name=input.toString(); 
    LinearLayout.LayoutParams lp= new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT); 
    input.setLayoutParams(lp); 
    questionName.setView(input); 
    questionName.setNegativeButton(" cancel ", new DialogInterface.OnClickListener(){ 
     public void onClick(DialogInterface dialog, int id){ 

     } 
    }); 

    questionName.setPositiveButton(" done ", new DialogInterface.OnClickListener(){ 
     public void onClick(DialogInterface dialog, int id){ 

     } 
    }); 

    AlertDialog dialog = questionName.create(); 

    dialog.show(); 
} 
public void saveName(){ 
    SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); 
    SharedPreferences.Editor editor = settings.edit(); 
    editor.putString("name", name); 
    editor.commit(); 
} 

ответ

0

использование edittext.getText().toString();, чтобы получить текст из EditText,

public void popUp(){ 

    AlertDialog.Builder questionName = new AlertDialog.Builder(this); 

    questionName.setTitle(" Enter your name "); 
    EditText input=new EditText(this); 

    LinearLayout.LayoutParams lp= new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT); 
    input.setLayoutParams(lp); 
    questionName.setView(input); 
    questionName.setNegativeButton(" cancel ", new DialogInterface.OnClickListener(){ 
     public void onClick(DialogInterface dialog, int id){ 

     } 
    }); 

    questionName.setPositiveButton(" done ", new DialogInterface.OnClickListener(){ 
     public void onClick(DialogInterface dialog, int id){ 
      name=input.getText().toString(); // see this line. 
      saveName(); 
     } 
    }); 

    AlertDialog dialog = questionName.create(); 

    dialog.show(); 
} 
+0

Shijil, он работал, спасибо , но имя не сохранено ... Я вышел из приложения, вернулся и ничего ... это другой вопрос ? Извините, я учусь :) – glassraven

1

Вы рекомендовали посетить Android Studio Storage Option иметь увеличенное представление о механизме и функциональности

, как говорится, позвольте мне представить у вас есть фрагмент того, как я храню значения в своей заявке

Обратите внимание, что вам нужно внести небольшие корректировки, с осле я подаю Sharedpreferences внутри фрагмента

первый

addusername = (EditText) oView.findViewById(R.id.addnewUsername); 

второй

//adjustment and reattachment 
    String bonsiour = addusername.getText().toString().trim(); 

      SharedPreferences sPref = getActivity().getPreferences(0); 
      SharedPreferences.Editor edt = sPref.edit(); 
      edt.putString("key1", bonsiour); 
      edt.commit(); 


      //toast to confirm value has been saved 
      String buzo = sPref.getString("key1", "empty"); 
      Toast.makeText(getActivity(), "You're " + buzo + "!!", Toast.LENGTH_LONG).show(); 

Это как извлечь/чтение из него

SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE); 
    String name = prefs.getString("key1", "No name defined"); 

    if(name.equals("PDF_FOUND")){ 
     Toast.makeText(Controller.this,"IT WORKED !", Toast.LENGTH_SHORT).show(); 




    } else{ 
     Toast.makeText(Controller.this,"BAD NEWS !", Toast.LENGTH_SHORT).show(); 

}  
} 
+1

Спасибо, Александр, сейчас работает – glassraven

Смежные вопросы