SORU
29 HAZİRAN 2011, ÇARŞAMBA


Nasıl onSavedİnstanceState örnek lütfen kullanmak için

Aşağıda durumu kurtarmaya gelince kafam karıştı. onSaveInstanceState(Bundle) etkinlik yok olmak üzereyken denir biliyorum. Ama nasıl bilgileri depolar ve orijinal durumuna geri onCreate(Bundle savedInstanceState) getirir misin? Bu paket bilgileri geri nasıl anlamıyorum. Eğer birisi bir örnek verebilir eğer yararlı olacaktır. Dev rehber anlatan iyi bir iş yapmaz.

public class Conversation extends Activity {
    private ProgressDialog progDialog;
    int typeBar;
    TextView text1;
    EditText edit;
    Button respond;
    private String name;
    private String textAtView;
    private String savedName;

    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);

        setContentView(R.layout.dorothydialog);
        text1 = (TextView)findViewById(R.id.dialog);
        edit = (EditText)findViewById(R.id.repsond);
        respond = (Button)findViewById(R.id.button01);

        if(savedInstanceState != null){
            savedInstanceState.get(savedName);
            text1.setText(savedName);
        }
        else{
            text1.setText("Hello! What is your name?");
            respond.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    name = edit.getText().toString();
                    text1.setText("Nice to meet you "  name);
                }   
            });
        }
    }

    @Override
    public void onSaveInstanceState(Bundle outState){
        super.onSaveInstanceState(outState);
        outState.putString(savedName, name);
    }
}

CEVAP
29 HAZİRAN 2011, ÇARŞAMBA


Bundle kaydetmek istediğiniz tüm bilgileri için bir kapsayıcı. İçine veri eklemek için koymak* fonksiyonları kullanın. İşte kısa bir liste (daha fazla) Bundle veri depolamak için kullanabilirsiniz koy fonksiyonları.

putString
putBoolean
putByte
putChar
putFloat
putLong
putShort
putParcelable (used for objects but they must implement Parcelable)

onCreate işlevi, Bundle Bu program için teslim etti. Uygulamayı yeniden, ya da ilk kez başlarsa kontrol etmek için en iyi yoldur:

if( savedInstanceState != null ) {
 //Then the application is being reloaded
}

Verileri geri almak için kullanın koy* fonksiyonlar gibi fonksiyonlar olsun. Verileri isim-değer çifti olarak saklanır. Bu bir hashmap gibi. Ve Değer, Değer geri istediğinizde, anahtarı ver ve işlev bir değer alır bir anahtar sağlar. Burada kısa bir örnek.

@Override
public void onSaveInstanceState(Bundle outState) {
   super.onSaveInstanceState(outState);
   outState.putString("message", "This is my message to be reloaded");
}

@Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  if( savedInstanceState != null ) {
     Toast.makeText(this, savedInstanceState .getString("message"), Toast.LENGTH_LONG).show();
  }
}

Kayıtlı mesaj ekrana kızarmış olacak. Bu yardımcı olur umarım.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Ben Vivona

    Ben Vivona

    24 Ocak 2010
  • BrandonHarrisWalker

    BrandonHarri

    27 Kasım 2006
  • jkimisyellow

    jkimisyellow

    6 Mayıs 2009