2011-10-21 167 views
1

我有一個活動A,它有一個按鈕和一個顯示書名的列表視圖。點擊按鈕後,活動B開始,用戶填寫書籍表格並保存。當他按下按鈕時,用戶來到活動A.在這裏,應該在列表視圖中更新書名。我想我必須在onResume()中編寫一些代碼。你能告訴我該寫什麼嗎?我正在使用自定義列表視圖。在android中重新啓動活動

回答

0

開始活動B與startActivityForResult()和使用方法onActivityResult()重新啓動或處理新數據

例如,要啓動活動B:

String callingActivity = context.getLocalClassName(); 
Intent newActivity = new Intent(getApplicationContext(),ActivityB.class); 
newActivity.setData(Uri.parse(callingActivity)); 
startActivityForResult(newActivity, 0); 

然後在您的活動A類的某處:

protected void onActivityResult(int requestCode, int resultCode, Intent data){ 
     if(requestCode == 0){ 
      // do processing here 
     } 
    } 

其他答案應該足夠了,但是可以在通過其他方式恢復活動的情況下調用onResume()。

要簡單地重新啓動活動A,當用戶從活動B按後退按鈕,然後把onActivityResult內的以下內容:

if(requestCode == 0){ 
      finish(); 
      startActivity(starterintent); 

     } 

而且在活動A的OnCreate,加starterintent = getIntent();

只記得在你的onCreate被調用之前的某個地方啓動變量Intent starterintent;

例如

public class ActivityA extends ListActivity { 
    Intent starterintent; 

    public void onCreate(Bundle b){ 
    starterintent = getIntent(); 
    } 

    protected void onActivityResult(int requestCode, int resultCode, Intent data){ 
    if(requestCode == 0){ 
     finish(); 
     startActivity(starterintent); 
    } 
    } 

    private void startActivityB(){ 
    String callingActivity = context.getLocalClassName(); 
    Intent newActivity = new Intent(getApplicationContext(),ActivityB.class); 
    newActivity.setData(Uri.parse(callingActivity)); 
    startActivityForResult(newActivity, 0); 
    } 

} 

然後只需調用startActivityB()從一個按鈕,點擊或任何

+0

我需要從活動B.發送數據。如果我需要發送,如何發送數據。 –

+0

@prabhuM取決於你的數據存儲方式。如果它被保存到數據庫,文件,甚至共享首選項,那麼否,活動A將能夠訪問它,只要用戶在回退之前實際上將數據保存在活動B中。無論如何,我不知道通過後退按鈕操作傳遞數據的方式。 – aperture

0

是的,你是對的。在onResume中編寫代碼。

當您更新日期時,請致電notifyDataSetChanged();爲您的ListView適配器

希望,它可以幫助你!

0

您可以在用戶按下保存時開始活動,它會爲您解決它。 或者,如果你想按回:

@Override 
public void onResume(){ 
    super.onResume(); 
    list.clear(); 
    list.addAll(getBooks()); 
    adapter.notifyDataSetChanged(); 
} 
相關問題