0

すべての集計連絡先を表示するListActivityがあります。ユーザーが1つをクリックすると、私のコードは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

私はこれについてアンドロイドにバグを提出しました。誰かがそれを見て、文書化されていない回避策があると答えました。バグレポートから:

文書化されていない回避策は、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 に答える