0

我有一个显示所有聚合联系人的 ListActivity。当用户单击一个时,我的代码调用 startActivityForResult。所有这些都可以正常工作。当用户完成编辑时,我希望我的 ListActivity 再次显示。相反,会显示“人员”活动。同样,我的 onActivityResult 函数永远不会被调用。

这是处理点击的代码:

  @Override
  public void onItemClick (AdapterView<?> parent, View view, int position, long id) 
  {
    Cursor cur = ((SimpleCursorAdapter)parent.getAdapter()).getCursor();
    cur.moveToPosition (position);
    String key = cur.getString (2);  // "2" is the col containing the LOOKUP_KEY
    System.out.println ("clicked " + key);

    // make intent to edit contact
    Intent intent = new Intent (Intent.ACTION_EDIT);
    intent.setData (Uri.parse (ContactsContract.Contacts.CONTENT_LOOKUP_URI + "/" + key));
    startActivityForResult (intent, 2);
  }

而且我还有一个 onActivityResult 函数:

  @Override
  protected void onActivityResult (int requestCode, int resultCode, Intent data)
  {
    System.out.println ("request " + requestCode + ", result " + resultCode);
  }

有什么建议么?

4

4 回答 4

3

我为此向android提交了一个错误。有人看着它并回答说有一个未记录的解决方法。从错误报告中:

未记录的解决方法是调用 putExtra("finishActivityOnSaveCompleted", true); 在 ACTION_EDIT 意图上。
但是,由于这是无证的,我不知道哪个 Android 版本会使用它。

我试过了,它适用于我正在使用的 Android 版本:4.1.2。有关详细信息,请参阅问题 39262。

于 2012-11-08T21:25:45.160 回答
1
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // Check which request we're responding to
    if (requestCode == 2) {
        // Make sure the request was successful
        if (resultCode == RESULT_OK) {
            // The user picked a contact.
            // The Intent's data Uri identifies which contact was selected.

            // Do something with the contact here (bigger example below)
        }
    }
}

将您的 onActivity 结果替换为此。在他们将工作后获取请求代码

于 2012-11-02T05:33:12.027 回答
0

添加

super.onActivityResult(requestCode, resultCode, data);

在 OnActivtyResult() 中。

于 2012-11-02T05:21:40.160 回答
0

确保您从活动中调用 startActivityForResult,然后只会调用您的 onActivityResult。例如,如果您在片段中有类似的代码,则永远不会调用 onActivityResult。

于 2012-11-02T05:46:51.740 回答