2015-11-30 3 views
0

У меня есть ящик, который скользит слева в моей деятельности. Обычно я вызываю startActivityForResult с кнопки, и это нормально работает нормально. Кнопка создается в моей деятельности, поэтому startActivityForResult и onActivityResult работают нормально.Вызов startActivityForResult из другого класса?

Поскольку я реализовал ящик и вызываю startActivityForResult (который загружает камеру) из метода selectItem, камера не запускается. Я думаю, причина в том, что 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

Основы java (или даже OOP) ... startActivityForResult - это метод некоторого класса ... вам нужен экземпляр этого класса, чтобы назвать его ... где проблема? – Selvin

+0

@Selvin Я создаю экземпляр в своей работе, и я вызываю startActivityForResult с помощью DrawerItemClickListener, который является другим классом. onActivityResult не вызывается как в другом классе – turtleboy

+0

Вы вызвали setResult() и finish() в открывшемся действии? –

ответ

1

Использование startActivityForResult() начать деятельность должна использоваться, чтобы сделать какую-то работу на этой новой деятельности, и возвращает результат вызывающему абоненту, вызвав setResult(int resultCode) или setResult(int resultCode, Intent data) метод.

Например, приложение может запускать приложение для камеры и получать полученное фото в результате. Или вы можете запустить приложение «Люди», чтобы пользователь мог выбрать контакт, и в результате вы получите данные о контакте.

Итак, пока вы не называйте setResult() и finish() на новой деятельности, ваша деятельность звонящий никогда не получит результат на это onActivityResult() обратного вызова.

Вы должны обязательно прочитать this для подробного объяснения. Также рассмотрите возможность чтения this article.

Надеюсь, это помогло.

+0

Boldizsar Привет, я принял ваш ответ, потому что в том, что вы предложили, правильно и поможет большинству людей.Я проверил, и я действительно называю setresult() и finish(), поэтому после нескольких дней попыток разного типа я вспомнил, что я изменил режим запуска своей деятельности по вызову на андроид: launchMode = "singleTask" android: noHistory = "true", поэтому onActivityResult никогда не вызывался в моей деятельности, поскольку он был выбит из стека. Спасибо за помощь. – turtleboy

+0

Я сделал эти изменения режима запуска несколько месяцев назад, поэтому не был свежим в памяти. Один из тех, кого трудно решить, поскольку это не очевидно :) – turtleboy

+0

Добро пожаловать @turtleboy Рад, что вы это сделали. –

Смежные вопросы