2014-06-24 37 views
8

Android'de, görünümü xml'de tanımlandığı gibi duruma geri yüklemek için kolay bir yol var mı?Geri Yükleme özgün xml durumuna dön

Örneğin, ben xml bu görüşü vardır:

<EditText 
    android:id="@+id/set_text" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:inputType="text" 
    android:ems="10" 
    android:visibility="gone" > 
</EditText> 

Şimdi programlı, görünürlük görünür olarak ayarlanır

, kullanıcı içine metin girdiğinde, bir hata .setError seti alır ve şimdi istiyorum görünümü açıkça görmeden orijinal durumuna geri döndürün:

view.setVisibility(View.GONE); 
view.setText(""); 
view.setError(null); 

cevap

0

Sorunu açık bir şekilde anlayamıyorum. Her neyse cevap veriyorum, operasyonunuzu geri almak için durumu Onresume() 'a yazınız.

Onresume(){ 
//write the condition 
//do something for your view 
super.onResume(); 
    } 
+0

Sorum orijinal XML durumuna Görünüm dönmek için basit bir yol olup olmadığıdır ... o yardımcı olur 'View.reset()' gibi bir şey umut. Programlı olarak nasıl değiştirebileceğimi sormuyorum. – wvdz

3

Bunun kolay bir yol olduğunu düşünürseniz bilmiyorum ama aşağıdakileri denedim.

ana yılında Sonra kendi xml geri döndürmek istiyor Görünümü (Ben Visibilty, metin ile oynarken, bir Button ile çalıştı, ...)

button.xml

<?xml version="1.0" encoding="utf-8"?> 
<Button xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/adminUser2" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginLeft="20dp" 
    android:layout_marginRight="20dp" 
    android:layout_marginTop="10dp" 
    android:text="@string/admin_user" /> 

tanımlayın düzen Inflater

kullanarak etkinlik yük olarak ekleme noktasına içine Görünüm ekleme noktası

<LinearLayout 
    android:id="@+id/buttonInsertLayout" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginTop="10dp" 
/> 

tanımlamak

private Button admin; 

@Override 
protected void onResume() { 
    super.onResume(); 
    admin = (Button)View.inflate(UserLoggin.this, R.layout.button, null); 
    ViewGroup insert = (ViewGroup)findViewById(R.id.buttonInsertLayout); 
    insert.addView(admin); 
    // ... 
} 

Sıfırla() yönteminin daha sonra, xml içeriğine bağlı olarak görünümün yeni bir örneğini şişirebilir ve değiştirilmiş olanı yenisiyle değiştirebilirsiniz.

public void resetView() { 
    ViewGroup parent = (ViewGroup)admin.getParent(); 
    int index = parent.indexOfChild(admin); 
    parent.removeViewAt(index); 
    // Inflate a fresh new View corresponding to the initial state of the view 
    Button adminSave = (Button)View.inflate(UserLoggin.this, R.layout.button, null); 
    parent.addView(adminSave, index); 
} 

,

+0

Evet .. sevdiğim kadar kolay olmasa da, manzarayı yeniden şişirmenin, bunu yapmanın tek yolu olması çok iyi. Şu anki amacım için, bu sadece daha karmaşık bir hal alacaktır, ancak izlenemedikleri görüşünde çok fazla değişiklik olduğunda bunun iyi bir yaklaşım olabileceğini hayal edebiliyorum. – wvdz

İlgili konular