2011-08-26 89 views
8

在我的應用程序中,我需要啓動SelectionActivity以選擇其中一個選項。一旦選擇了該選項,我需要刷新MainActivity上的另一個列表。檢測Android中的活動已關閉

這是我使用啓動SelectionActivity代碼:

Intent intent = new Intent(MainActivity.this, SelectionActivity.class); 
startActivity(intent); 

在SelectionActivity這是接收所選擇的選項的代碼將關閉活動:

selectedValue = adapter.getItem(position); 
finish(); 

現在,應用程序來回到MainActivity,但我不知道如何接收SelectionActivity已關閉的事件。

謝謝

回答

0

startActivityForResult(),然後覆蓋onActivityResult()方法。有很多例子可以使用google關鍵字startactivityforresult。

0

使用onActivityResult()或使selectedValue靜態。在MainActivity使用的onResume方法:

protected void onResume() { 
    if(SelectionActivity.selectedValue != 0) 
      newValue = SelectionActivity.selectedValue; 
} 
1

根據您的應用程序的設計,您可以通過觀看的onResume()或onRestart()事件的主要活動是返回每次刷新列表。另外還有startActivityForResult()。所有這些方法都在Activity中。

1

解決方案1:

  1. selectedValue靜態公共變量。
  2. 在你MainActivity

    void onResume() { 
         result = SelectionActivity.selectedValue; 
    } 
    

解決方案2:

如果SelectionActivity的工作就是簡單地從多個選項中進行選擇,可以考慮使用Dialogs

12

快速片段顯示使用startActivityForResult

private static final int MY_REQUEST_CODE = 0xe110; // Or whatever number you want 
// ensure it's unique compared to other activity request codes you use 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
    super.onActivityResult(requestCode, resultCode, data); 

    if (requestCode == MY_REQUEST_CODE) 
     ActiviyFinishedNowDoSomethingAmazing(); 
} 

public void onClickStartMyActivity(View view) 
{ 
    startActivityForResult(new Intent(this, GameActivity.class), MY_REQUEST_CODE); 
} 

關於getting a result from an activity的更多閱讀。

+0

你是否隨意選擇0xe110? – Mikepote

+1

是的,它是任意的。理想情況下應該是一個常數 - 我會更新它來顯示這個! – noelicus