从另一个类调用startActivityForResult?

时间:2015-11-30 10:26:43

标签: android slidingdrawer

我的活动中有一个从左侧滑动的抽屉。我通常从按钮单击调用startActivityForResult,这通常正常。该按钮在我的Activity中实例化,因此startActivityForResult和onActivityResult工作正常。

由于我已经实现了抽屉并从selectItem方法调用startActivityForResult(启动摄像头),因此相机无法启动。 我认为这是因为startActivityForResultonActivityResult需要在同一个类中才能使机制起作用。

如何从抽屉中调用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());

1 个答案:

答案 0 :(得分:1)

使用startActivityForResult()启动活动应该用于对该新活动进行一些工作,并通过调用setResult(int resultCode)setResult(int resultCode, Intent data)方法将结果返回给调用者。

  

例如,您的应用可以启动相机应用并接收拍摄的照片。或者,您可以启动“人脉”应用,以便用户选择联系人,然后您就会收到联系人详细信息。

因此,在您不在新活动上致电setResult()finish()之前,您的来电活动将永远不会收到onActivityResult()回调的结果。< / p>

您必须阅读this以获得详尽的解释。 另请考虑阅读this article

希望它有所帮助。