2012-09-24 64 views
3

我有一個菜單按鈕,開始一個新的活動,當它完成時,用戶按下按鈕,它將數據寫入SQLite數據庫並完成活動。但是它所反映的片段顯示了信息,並且在活動結束時它不會令人耳目一新。當我回到片段時,如何確保數據被刷新?如何從活動回來後刷新片段?

我使用startActivityForResult()和追趕下面的代碼的結果,但我還是沒有得到片段的更新來解決這個

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    // TODO Auto-generated method stub 
    super.onActivityResult(requestCode, resultCode, data); 
    if ((requestCode == MainActivity.MYACTIVITY_REQUEST_CODE) && (resultCode == Activity.RESULT_OK)) 
     adapter.notifyDataSetChanged(); 
} 

回答

0

的一種方法是使用startActivityForResult(intent, MyStatusCode),然後捕獲通過使用類似返回:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
    if (requestCode == MyStatusCode) { 
    //Refresh the fragment here 
    } 
} 
+0

我試過了,它只是重新開始活動。我將用我目前擁有的代碼更新我的問題。 – Rory

+0

onActivityResult()應該放在片段還是我的主要活動中? – Rory

+0

我會用什麼來刷新片段?這是一個ListFragment,我嘗試調用'adapter.notifyDataSetChanged()',但仍然不刷新列表。 – Rory

2

可以使用 onStart() 這種方法,當片段變得可見或重點調用。

0

的另一種方式來解決這個

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
View view = inflater.inflate(R.layout.fragment_message, container, false);} 

只是誇大的觀點和適配器什麼不做什麼 和

@Override 
public void onResume() { 
    super.onResume(); 
    logiMessages.clear();//clear array 
    mAdapter.notifyDataSetChanged(); // notify adapter 
    getData(mParam1, mParam2); // getdatas from service 
}