OnActivityResult не работает в TabActivityGroup?

Я использую вкладку в качестве основной деятельности, в которой он имеет 4 вкладки. Одна вкладка - группа действий, которая имеет три кнопки. Каждая кнопка - это одно действие. Я использую камеру в одном из этих мероприятий. Я знаю, что это работает, потому что я проверил на карте памяти, что изображение было сохранено, но он не вызывает метод Onactivityresult ().

Это для отображения ContentView

    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    View viewToLoad = LayoutInflater.from(this.getParent()).inflate(R.layout.enter_expenses, null);
    this.setContentView(viewToLoad);            

Этот код используется для получения изображения

             dbimgguid = UUID.randomUUID();
             imagename =dbimgguid.toString();
             Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
             photo = new File(Environment.getExternalStorageDirectory(), "Expenses"+imagename+".jpg");
             intent.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(photo));
             imageurl = Uri.fromFile(photo); 
             startActivityForResult(intent, CAMERA_RECEIPTREQUEST); 

Это результат активности

     @Override
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
     super.onActivityResult(requestCode, resultCode, data);  
     System.out.println(requestCode);
     System.out.println(resultCode);
     switch(requestCode)
     {
     case CAMERA_RECEIPTREQUEST:  
         if(resultCode== Activity.RESULT_OK)
         {
         //Toast.makeText(this, "Receipt Image Saved", Toast.LENGTH_SHORT).show();
         BitmapFactory.Options options = new BitmapFactory.Options();
         options.inSampleSize = 8;
         //ImageView jpgView = (ImageView)findViewById(R.id.imageView1);
         Bitmap receipt = BitmapFactory.decodeFile(photo.toString(),options);  
         String image = "Expenses"+imagename+".jpg"; 
         Intent imagepass = new Intent(ExpensesActivity.this,ReviewReceiptImage.class);
         imagepass.putExtra("receipt", receipt);
         imagepass.putExtra("imagename", image);
         startActivityForResult(imagepass, CAMERA_CONFIRMRECEIPT); 
         Toast.makeText(this, "Receipt Image Saved", Toast.LENGTH_SHORT).show();
         }

     case CAMERA_CONFIRMRECEIPT:

         Toast.makeText(this, "Receipt Image Saved", Toast.LENGTH_SHORT).show();
         if(resultCode == CAMERA_CONFIRMRECEIPT)
         {
             take_receipt.setEnabled(false);
             take_receipt.setVisibility(View.GONE);
             show_receipt.setEnabled(true);
             show_receipt.setVisibility(View.VISIBLE);
         } 
         break;
     }
 }

Спасибо за помощь ребята

 Shabbir Panjesha28 мая 2012 г., 08:35
Если вы используете TabGroupActivity, тогда вместо перезаписи метода onActivityResult () следует перезаписать метод handleActivityResult ()
 Alex Lockwood27 мая 2012 г., 22:55
TabActivity устарела в пользуFragments ж / пакет совместимости.

Ответы на вопрос(1)

Решение Вопроса

В конце концов я выяснил / вспомнил, что проблема в том, что Android допускает только вложенный слой подактивов ... т.е. подэтапы не могут вкладывать субактивиты. Чтобы решить это:

вызовgetParent().startActivityForResult() из вашей под-деятельности ваш родитель (группа активности) сможет обрабатывать onActivityResult. Поэтому я создал подкласс ActivityGroup и обработал этот onActivityResult. Вы можете перенаправить полученный результат обратно в подзадачу, если вам нужно. Просто получите текущую активность поgetLocalActivityManager().getCurrentActivity() , Мои дочерние действия наследуются от пользовательских действий, поэтому я добавилhandleActivityResult(requestCode, resultCode, data) в этом подклассе для группы действий для вызова.

Ответьте на поставленный выше вопрос с точным кодом

ActivityGroup->SubActivities->onActivityResult->ActivityGroup(onActivityResult)->subActivity(onActivityResult)

Это класс ActivityGroup, в котором вы должны определить onActivityResult для всех подэтапов,

@Override
public void onActivityResult(int requestCode,int resultCode, Intent data)
{

         switch(requestCode)
            {

            case CAMERA_RECEIPTREQUEST:   
            if(resultCode == Activity.RESULT_OK)
            {
            ExpensesActivity activity = (ExpensesActivity) getLocalActivityManager().getCurrentActivity();
            activity.onActivityResult(requestCode, resultCode, data);
            }
            break;

            case CAMERA_CONFIRMRECEIPT:
            ExpensesActivity activity1 = (ExpensesActivity) getLocalActivityManager().getCurrentActivity();
            activity1.onActivityResult(requestCode, resultCode, data);   
            }

        }

В Sub Activity вы должны установить вид, как показано ниже

    View viewToLoad = LayoutInflater.from(this.getParent()).inflate(R.layout.enter_time, null);
    this.setContentView(viewToLoad);

Затем в под-деятельности по ActiveResulty ()

    @Override
    public void onActivityResult(int requestCode,int resultCode, Intent data)
    {
     //Some Code
    }
 04 июн. 2012 г., 13:36
Я не совсем понимаю, что вы говорите в своем ответе. не могли бы вы объяснить это подробно?
 vinothp06 июн. 2012 г., 10:17
Я отредактировал ответ выше .. Надеюсь, это поможет .. Если у вас есть какие-либо вопросы, пожалуйста, дайте мне знать ..
 25 сент. 2012 г., 05:35
@ Vino, сэр, не могли бы вы рассказать подробнее, потому что я думаю, что моя проблема такая же, как и ваш вопрос?
 07 июн. 2012 г., 07:00
Tnx для решения, но я получил другое решение для моей проблемы.

Ваш ответ на вопрос