0

I'm using Activitygroup concept to handle multiple activities under single tab. What I am doing in first activity of tab, I fetch image from gallery and camera, and after that when user selects image that image should move to second activity but those both activities must remain under the same tab. Here is my code...

TabGroupActivity.java

public class TabGroupActivity extends ActivityGroup {

    private ArrayList<String> mIdList;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);       
        if (mIdList == null) mIdList = new ArrayList<String>();
    }

  @Override
  public void finishFromChild(Activity child) {
      LocalActivityManager manager = getLocalActivityManager();
      int index = mIdList.size()-1;

      if (index < 1) {
          finish();
          return;
      }

      manager.destroyActivity(mIdList.get(index), true);
      mIdList.remove(index); index--;
      String lastId = mIdList.get(index);
      Intent lastIntent = manager.getActivity(lastId).getIntent();
      Window newWindow = manager.startActivity(lastId, lastIntent);
      setContentView(newWindow.getDecorView());
  }

  public void startChildActivity(String Id, Intent intent) {     
      Window window = getLocalActivityManager().startActivity(Id,intent.addFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT));
      if (window != null) {
          mIdList.add(Id);
          setContentView(window.getDecorView()); 
      }    
  }


  @Override
  public boolean onKeyDown(int keyCode, KeyEvent event) {
      if (keyCode == KeyEvent.KEYCODE_BACK) {
          //preventing default implementation previous to android.os.Build.VERSION_CODES.ECLAIR
          return true;
      }
      return super.onKeyDown(keyCode, event);
  }


  @Override
  public boolean onKeyUp(int keyCode, KeyEvent event) {
      if (keyCode == KeyEvent.KEYCODE_BACK) {
          onBackPressed();
          return true;
      }
      return super.onKeyUp(keyCode, event);
  }


  public void  onBackPressed() {
      int length = mIdList.size();
      if ( length > 1) {
          Activity current = getLocalActivityManager().getActivity(mIdList.get(length-1));
          current.finish();
      }  
  }
}

MainActivity.java

Intent intentPics = new Intent().setClass(this, GalleryPic_First.class);
TabSpec tabPics = tabHost
  .newTabSpec("Photo")
  .setIndicator("Photo", ressources.getDrawable(R.drawable.icon_apple_config))
  .setContent(intentPics);

GalleryPic_First .java

public class GalleryPic_First extends TabGroupActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        startChildActivity("EditActivity", new Intent(this,GalleryPic.class));
    }
}

GalleryPic.java

public class GalleryPic extends Activity {

    private static final int TAKE_PICTURE = 0;
    private static final int REQUEST_ID = 1;
    private static final int HALF = 2;
    private Uri mUri;
    private Bitmap mPhoto;
    ImageView ivGallery, ivCamera;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.gallery_pic);
        ivGallery = (ImageView)findViewById(R.id.gallery);
        ivCamera = (ImageView)findViewById(R.id.snap);

        ivGallery.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.setAction(Intent.ACTION_GET_CONTENT);
                intent.addCategory(Intent.CATEGORY_OPENABLE);
                intent.setType("image/*");
                getParent().startActivityForResult(intent, REQUEST_ID);

            }
        });

        ivCamera.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent i = new Intent("android.media.action.IMAGE_CAPTURE");
                File f = new File(Environment.getExternalStorageDirectory(),  "photo.jpg");
                i.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f));
                mUri = Uri.fromFile(f);
                getParent().startActivityForResult(i, TAKE_PICTURE);
            }
        });


    }




    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode) {
        case TAKE_PICTURE:
            if (resultCode == Activity.RESULT_OK && data != null) 
            {
                getContentResolver().notifyChange(mUri, null);
                ContentResolver cr = getContentResolver();

                try 
                {
                    mPhoto = android.provider.MediaStore.Images.Media.getBitmap(cr, mUri);
                   GalleryPic_Second.bmp = mPhoto;

                }

                catch (Exception e) 
                {
                    Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT).show();
                }


            }


            break;
        case REQUEST_ID :
            InputStream stream = null;
             if (resultCode == Activity.RESULT_OK && data != null) {

                 try
                 {
                    stream = getContentResolver().openInputStream(data.getData());
                    Bitmap original = BitmapFactory.decodeStream(stream);
                    GalleryPic_Second.bmp = Bitmap.createScaledBitmap(original, original.getWidth()/HALF, original.getHeight()/HALF, true);

                    Intent in = new Intent(GalleryPic.this, GalleryPic_Second.class);
                    TabGroupActivity parent = (TabGroupActivity)getParent();
                    parent.startChildActivity("ArrowsActivity", in);  


                 }

                 catch (Exception e) 
                 {
                    e.printStackTrace();
                 }
                if (stream != null) {
                    try {
                        stream.close();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }



             }

            break;  
        }

    }


    @Override
    public void onBackPressed() {
    // this.getParent().onBackPressed();
         TabViewLayout parentTab = (TabViewLayout) this.getParent();
         parentTab.switchTabBar(1);

    }

  }

GalleryPic_Second.java

public class GalleryPic_Second extends Activity {
    public static Bitmap bmp;
    Button btnUpload;
    ImageView iv;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.transparent_dialog);
        View viewToLoad = LayoutInflater.from(this.getParent()).inflate(R.layout.transparent_dialog, null);
        this.setContentView(viewToLoad);
        setResult(RESULT_OK);
        iv = (ImageView)viewToLoad.findViewById(R.id.photo_holder);
        btnUpload = (Button)viewToLoad.findViewById(R.id.upload);
        iv.setImageBitmap(bmp);

        btnUpload.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                finish();
            }
        });
    }

     @Override
        public void onBackPressed() {
        // this.getParent().onBackPressed();
             finish();

        }

     public void onActivityResult(int reqCode, int resultCode, Intent data) {
            super.onActivityResult(reqCode, resultCode, data);
        }
}

But the image is not being displayed in second activity. How to do this?

Looking Forward
  • 3,579
  • 8
  • 45
  • 65
  • 1
    [`ActivityGroup`](http://developer.android.com/reference/android/app/ActivityGroup.html) is deprecated. Don't use it; rather use fragments. – gunar Sep 20 '13 at 11:39

1 Answers1

0

call this way

 GalleryPic.this.startActivityForResult(intent, REQUEST_ID);
Sunil Kumar
  • 7,086
  • 4
  • 32
  • 50
  • @Sunil... It's not working... I've been through many solutions but not getting how to implement it... Here are some links of solution...http://stackoverflow.com/questions/6677466/stuck-with-getting-camera-pic-when-using-the-tab-activity/6679665?noredirect=1#comment27922821_6679665 – Looking Forward Sep 20 '13 at 11:49
  • but there they are using the class which extends TabActivity but here you extend the Activity class. So simply you can call startActivityForResult(intent, REQUEST_ID); – Sunil Kumar Sep 20 '13 at 12:03
  • I've extended that but not posted here – Looking Forward Sep 20 '13 at 12:04