2

Here, I have to select an image from gallery or camera. When user selects image from gallery, that selected image should be displayed to next activity. But here these both activities are under the same tab, say tab A. Means in tab A there are two activities. In first activity, user has two options to select image either from gallery or from camera. And in second activity under same tab A, user gets that selected image. But here I'm not getting the expected output. Below is my code...

MainActivity.java

public class MainActivity extends TabActivity {

    TabHost tabHost;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        Resources ressources = getResources(); 
        tabHost = getTabHost(); 

        Intent intentProfile = new Intent().setClass(this, Tab1.class);
        TabSpec tabProfile = tabHost
          .newTabSpec("Profile")
          .setIndicator("Profile", ressources.getDrawable(R.drawable.ic_launcher))
          .setContent(intentProfile);

        Intent intentFriends = new Intent().setClass(this, Tab2.class);
        TabSpec tabFriends = tabHost
          .newTabSpec("Friends")
          .setIndicator("Friends", ressources.getDrawable(R.drawable.ic_launcher))
          .setContent(intentFriends);


        tabHost.addTab(tabProfile);
        tabHost.addTab(tabFriends);

        tabHost.setCurrentTab(0);

    }


    public void switchTabBar(int tab) {
        tabHost.setCurrentTab(tab); 
    }
    @Override
      public void onBackPressed() {
        // Called by children
        MainActivity.this.finish();
        }

}

ABCGroup.java

public class ABCGroup extends ActivityGroup{

public static ABCGroup group;
private ArrayList<View> history;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.history = new ArrayList<View>();
    group = this;

    View view = getLocalActivityManager().startActivity
                ("ParentActivity", 
                new Intent(ABCGroup.this, Tab1.class)
                .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))
                .getDecorView();

    replaceView(view);
}

public void replaceView(View v) {
    // Adds the old one to history
    history.add(v);
    // Changes this Groups View to the new View.
    setContentView(v);
}

public void back() {  
    if(history.size() > 0) {  
        history.remove(history.size()-1);
        if(history.size()<=0){
            finish();
        }else{
            setContentView(history.get(history.size()-1));
        }
    }else {  
        finish();  
    }  
}

@Override  
public void onBackPressed() {  
    ABCGroup.group.back();
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event){
    if (keyCode == KeyEvent.KEYCODE_BACK){
        ABCGroup.group.back();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}
}

Tab1.java

 public class Tab1 extends ActivityGroup {

        Button gallery, camera;
        private ArrayList<View> myActivityHistory;
        private static final int REQUEST_ID = 1;
        private static final int HALF = 2;
        private static final int TAKE_PICTURE = 3;
        private Uri mUri;
        private Bitmap mPhoto;
        int i = 0;
        @SuppressWarnings("deprecation")
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.tab1);
            myActivityHistory = new ArrayList<View>();

            gallery = (Button)findViewById(R.id.gallery);
            camera = (Button)findViewById(R.id.camera);

            gallery.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/*");
                        startActivityForResult(intent, REQUEST_ID);

                    }
                });

                camera.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);
                        startActivityForResult(i, TAKE_PICTURE);
                    }
                });
        }



        public void replaceContentView(String id, Intent newIntent, int flag) 
        {
            View mview = getLocalActivityManager().startActivity(id,newIntent.addFlags(flag)).getDecorView();
            ABCGroup.group.replaceView(mview);
        }


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

                        try 
                        {
                            mPhoto = null;
                            mPhoto = android.provider.MediaStore.Images.Media.getBitmap(cr, mUri);
                            Uri selectedImageUri = data.getData();
                            String selectedImagePath = getPath(selectedImageUri);
                        }

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

                    }


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

                         try
                         {
                            stream = getContentResolver().openInputStream(data.getData());
                            Bitmap original;
                            original = null;
                            original= BitmapFactory.decodeStream(stream);
                            Uri selectedImageUri = data.getData();
                            String selectedImagePath = getPath(selectedImageUri);

                            Intent in = new Intent(Tab1.this, Second.class);
                            replaceContentView("activity3",  in, Intent.FLAG_ACTIVITY_CLEAR_TASK);
                         }

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


                     }

                        break;
                }
            }

            public String getPath(Uri uri) {
                String[] projection = { MediaStore.Images.Media.DATA };
                Cursor cursor = managedQuery(uri, projection, null, null, null);
                int column_index = cursor
                        .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);

                cursor.moveToFirst();
                Toast.makeText(getBaseContext(), "" + cursor.getString(column_index) , 5000).show();

                SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
                SharedPreferences.Editor editor = preferences.edit();
                editor.putString("data", cursor.getString(column_index) );
                editor.commit();

                return cursor.getString(column_index);
            }

    }

Second.java

public class Second extends ActivityGroup {

    public static Bitmap bmp;
     String path;
    ImageView iv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.second);
        Button btn = (Button)findViewById(R.id.button1);
        iv = (ImageView)findViewById(R.id.imageView1);

        SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
        path = preferences.getString("data", "");
        File imgFile = new  File(path);
        if(imgFile.exists()){

            Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
            iv.setImageBitmap(myBitmap);

        }

        btn.setOnClickListener(new OnClickListener() { 
              @Override 
              public void onClick(View v) {

                  ABCGroup.group.back();
              }
            });

    }

     @Override
        public void onBackPressed() {
        // this.getParent().onBackPressed();
         Intent intent = new Intent(Second.this, Tab1.class);
          Tab1 parentActivity = (Tab1)getParent();  
          parentActivity.replaceContentView("Profile", new Intent(Second.this, Tab1.class), Intent.FLAG_ACTIVITY_CLEAR_TASK); 

        }

}
Looking Forward
  • 3,579
  • 8
  • 45
  • 65

0 Answers0