2011-08-26 118 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