2014-06-24 17 views
8

Trong Android, có cách nào dễ dàng để khôi phục chế độ xem về trạng thái như được xác định trong xml không?Khôi phục Chế độ xem về trạng thái gốc xml

Ví dụ, tôi có quan điểm này trong xml:

<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> 

Bây giờ lập trình, khả năng hiển thị được thiết lập để có thể nhìn thấy, người dùng nhập văn bản vào đó, một lỗi được thiết lập với .setError, và bây giờ tôi muốn chỉ cần hoàn nguyên chế độ xem về trạng thái ban đầu, mà không cần phải làm rõ ràng:

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

Trả lời

0

Tôi không thể hiểu rõ câu hỏi của bạn. Dù sao đang trả lời, hãy viết điều kiện trong Onresume() để hoàn nguyên hoạt động của bạn.

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

Câu hỏi của tôi là liệu có tồn tại một cách đơn giản để trở lại một Xem trạng thái XML ban đầu của nó, một cái gì đó như 'View.reset()'. Tôi không hỏi làm thế nào hoặc nơi tôi có thể thay đổi nó theo chương trình. – wvdz

3

Tôi không biết liệu bạn có coi đây là một cách dễ dàng hay không nhưng tôi đã thử những điều sau đây.

Xác định Xem bạn muốn trở lại trong xml riêng của mình (Tôi đã thử với một Button, chơi với visibilty, văn bản, ...)

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" /> 

Sau đó, trong chính bạn bố trí xác định một điểm chèn

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

Trong tải hoạt động của bạn View vào điểm chèn bằng cách sử dụng inflater

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); 
    // ... 
} 

Sau đó trên phương thức đặt lại(), bạn có thể tăng cường phiên bản mới của chế độ xem, dựa trên nội dung xml và thay thế nội dung đã chỉnh sửa bằng nội dung mới.

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); 
} 

Hy vọng nó sẽ giúp ...

+0

Có .. không dễ dàng như tôi đã thích, nhưng nó rất tốt có thể là lại thổi phồng xem là cách duy nhất để làm điều này. Đối với mục đích hiện tại của tôi, điều này sẽ chỉ làm cho nó phức tạp hơn, nhưng tôi có thể tưởng tượng đây có thể là một cách tiếp cận tốt nếu có quá nhiều thay đổi trong quan điểm rằng chúng không thể được theo dõi. – wvdz

Các vấn đề liên quan