我的活动中有一个从左侧滑动的抽屉。我通常从按钮单击调用startActivityForResult
,这通常正常。该按钮在我的Activity中实例化,因此startActivityForResult
和onActivityResult工作正常。
由于我已经实现了抽屉并从selectItem方法调用startActivityForResult
(启动摄像头),因此相机无法启动。
我认为这是因为startActivityForResult
和onActivityResult
需要在同一个类中才能使机制起作用。
如何从抽屉中调用startActivityForResult
并将结果发送到我的外部活动。
提前致谢。
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
Log.e(TAG, "in onActivityResult");
if (requestCode == 0) {
if (resultCode == RESULT_OK) {
Log.e(TAG, "result ok");
}
......
private class DrawerItemClickListener implements ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView parent, View view, int position, long id) {
String rowTitle = view.getTag().toString();
selectItem(position, rowTitle);
}
}
/** Swaps fragments in the main content view */
private void selectItem(int position, String rowTitle) {
// Highlight the selected item, update the title, and close the drawer
mDrawerList.setItemChecked(position, true);
//setTitle(mPlanetTitles[position]);
mDrawerLayout.closeDrawer(mDrawerList);
//"SIGN IN/OUT", "SEND OUTSTANDING TRANSACTIONS", "SIGNOUT MANUALLY", "LOGS", "ASSESSMENTS"
if(rowTitle.equalsIgnoreCase("SIGN IN/OUT")){
Log.e(TAG, "onclicked sign in");
Intent intent = new Intent("com.carefreegroup.rr3.SCAN");
intent.putExtra("SCAN_MODE","QR_CODE_MODE");
startActivityForResult(intent, 0);
}
。 EDIT1
adapter2 = new MySimpleArrayAdapter(this, lst2);
mDrawerList.setAdapter(adapter2);
mDrawerList.setOnItemClickListener(new DrawerItemClickListener());
答案 0 :(得分:1)
使用startActivityForResult()启动活动应该用于对该新活动进行一些工作,并通过调用setResult(int resultCode)或setResult(int resultCode, Intent data)方法将结果返回给调用者。
例如,您的应用可以启动相机应用并接收拍摄的照片。或者,您可以启动“人脉”应用,以便用户选择联系人,然后您就会收到联系人详细信息。
因此,在您不在新活动上致电setResult()
和finish()
之前,您的来电活动将永远不会收到onActivityResult()
回调的结果。< / p>
您必须阅读this以获得详尽的解释。 另请考虑阅读this article。
希望它有所帮助。