2015-01-16 4 views
0

사용자가 화면을 회전 할 때 RecyclerView 데이터를 복원하려고합니다. __MESSAGE_Item.java :savedInstanceState 복원이 작동하지 않습니다.

public class __MESSAGE_Item implements Serializable { 
    private String title, writer, message, index, parent; 
    int time, level; 

    public __MESSAGE_Item() { 
    } 

    public __MESSAGE_Item(String title, int time, String writer, String message, String index, String parent, int level) { 
     this.title = title; 
     this.time = time; 
     this.writer = writer; 
     this.message = message; 
     this.index = index; 
     this.parent = parent; 
     this.level = level; 
    } 

    public String getTitle() { 
     return title; 
    } 

    public void setTitle(String title) { 
     this.title = title; 
    } 

    public int getTime() { 
     return time; 
    } 

    public void setTime(int time) { 
     this.time = time; 
    } 

    public String getWriter() { 
     return writer; 
    } 

    public void setWriter(String writer) { 
     this.writer = writer; 
    } 

    public String getMessage() { 
     return message; 
    } 

    public void setMessage(String message) { 
     this.message = message; 
    } 

    public String getIndex() { 
     return index; 
    } 

    public void setIndex(String index) { 
     this.index = index; 
    } 

    public String getParent() 
    { 
     return parent; 
    } 

    public void setParent(String parent) 
    { 
     this.parent = "בתגובה להודעה " + parent; 
    } 

    public int getLevel() 
    { 
     return level; 
    } 

    public void setLevel(int level) 
    { 
     this.level = level; 
    } 
} 

MainActivity.java :

private ArrayList<__MESSAGE_Item> MessageList = new ArrayList<__MESSAGE_Item>(); 
... 
@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     LVM = (RecyclerView) findViewById(R.id.LVM); 
     adapter = new __MESSAGE_ListAdapter(MessageList, getApplicationContext()); 
     if (savedInstanceState == null) { 
      //Call The AsyncTask 
      new GetAllMessages().execute(); 
     } 
     ..... 
} 
@Override 
    protected void onSaveInstanceState(Bundle savedInstanceState) { 
     savedInstanceState.putSerializable("LVMData", MessageList); 
     super.onSaveInstanceState(savedInstanceState); 
    } 

    protected void onRestoreInstanceState(Bundle savedInstanceState) { 
     // Always call the superclass so it can restore the view hierarchy 
     super.onRestoreInstanceState(savedInstanceState); 

     if (savedInstanceState != null) { 
      MessageList = (ArrayList<__MESSAGE_Item>) savedInstanceState.getSerializable("LVMData"); 
      adapter.notifyDataSetChanged(); 
     } 
    } 

데이터는 I 복원하려고 할 때 잘 통과하지만 RecyclerView가 비어 이 내 코드입니다. 내가 뭘 잘못하고 있니?

답변

0
@Override 
protected void onSaveInstanceState(Bundle savedInstanceState) { 
    savedInstanceState.putSerializable("LVMData", MessageList); 
    super.onSaveInstanceState(savedInstanceState); 
} 

이 활동이 살해 된 경우에만

@Override 
protected void onSaveInstanceState(Bundle savedInstanceState) { 

    super.onSaveInstanceState(savedInstanceState); 
    savedInstanceState.putSerializable("LVMData", MessageList); 
} 
+0

실제로 이것은 어떤 차이도 없습니다. – vilpe89

1

onRestoreInstanceState를 호출해야하기 때문에 화면을 회전 할 때 호출되지 않을 수 있습니다. onCreate 방법에 else 조건을 내부에 추가해야합니다.

관련 문제