2014-11-06 70 views
0

我使用startActivityForResult調用片段中的活動,但是onActivityResult永遠不會被回調。我已經尋找可能的解決方案,包括從清單中移除SingleTask,SingleInstance,NoHistory,但目前爲止沒有任何工作。onActivityResult中的片段永遠不會被調用

這是被叫片段:

public class PickUpButtonFragment extends Fragment { 
.... 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 

     View view = inflater.inflate(R.layout.fragment_pick_up_button, container, 
       false); 

     ... 
     pickUpButton = (Button) view.findViewById(R.id.pickUpButton); 
     pickUpButton.setOnClickListener(new OnPickupClickListener()); 
... 
     return view; 
    } 
.... 
    private class OnPickupClickListener implements OnClickListener { 
     @Override 
     public void onClick(View view) { 
      Intent qrCodeActivityIntent = new Intent(getActivity(), QrCodeActivity.class); 
      startActivityForResult(qrCodeActivityIntent, 20); 
     } 
    } 

    @Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     // Check which request we're responding to 
     if (requestCode == 20) { 
      qrCodeValue = data.getStringExtra(QrCodeActivity.QR_CODE_FLAG); 
      requestDeviceLocation(); 
     } 
    } 
... 
} 

片段被包含在其中我推翻了onActivityResult

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    // TODO Auto-generated method stub 
    super.onActivityResult(requestCode, resultCode, data); 
} 

這是活動是如何在清單中聲明的​​活動:

<activity 
    android:name=".activity.GMapActivity" 
    android:label="@string/map_title" 
    > 
    <intent-filter> 
     <action android:name="android.intent.action.SEARCH" /> 
    </intent-filter> 

    <meta-data 
     android:name="android.app.searchable" 
     android:resource="@xml/searchable" /> 
</activity> 

被調用的活動有一個setResult方法:

public class QrCodeActivity extends Activity { 

... 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_qr_code); 
..... 
     initPickUpRequestButton.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Intent data = new Intent(); 
       data.putExtra(QR_CODE_FLAG, qrCodeValue); 
       setResult(RESULT_OK,data); 
      } 
     }); 

... 
    } 
.... 
} 

這就是所謂的活動是如何在清單中聲明:

<activity 
    android:name=".activity.QrCodeActivity" 
    android:label="@string/qr_code_title" 
    > 
</activity> 

的setResult被調用,但onActivtyResult從不叫回來,無論是在父活動,並在片段。

我正在用4.1.2構建。

+0

'setResult' then'finish()'... – StoneBird 2014-11-06 16:08:14

回答

1

您需要致電finish()才能在您的setResult()之後結束您的活動,以便任何來電者收到結果。

如果你只想發回消息給調用者而不終止這個活動,那麼你可能想要使用回調模式或廣播。

相關問題