在 android 中使用活动组在子活动中的图像不会更改



在我的应用程序中,我使用Tab。有三个选项卡。其中第三个选项卡是具有两个活动的活动组。在第一个活动中,有两个用户选项。用户可以从相机或图库中选择图像。选择图像后,用户应移动到子活动,该子活动将在该活动中显示所选图像。直到这个应用程序工作正常。但是我面临的唯一问题是,当我从子活动移回父活动时,图像未被清除。意味着一旦我从图库/相机中选择图像,用户就会移动到子活动,并且图像将显示在子活动中。现在,当我从子活动中按返回按钮时,用户将移回父活动,如果用户从厨房/相机中选择不同的图像,则子活动中不存在该图像。上一个图像位于子活动中。下面是我的代码。

ABC集团.java

public class ABCGroup extends ActivityGroup{
public static ABCGroup group;
private ArrayList<View> history;
View view;
int column_index;
@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.history = new ArrayList<View>();
    group = this;
    view = getLocalActivityManager().startActivity("ParentActivity", new Intent(ABCGroup.this, Tab1.class).addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY)).getDecorView();
    replaceView(view);
 }
public void replaceView(View v) {
    history.add(v);
    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);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    InputStream stream = null;
    if (requestCode == Tab1.REQUEST_ID && resultCode == Activity.RESULT_OK) {
         try
         {
            stream = getContentResolver().openInputStream(data.getData());
            Bitmap original = null;
            original= BitmapFactory.decodeStream(stream);
            Uri selectedImageUri = data.getData();
            String selectedImagePath = getPath(selectedImageUri);
        }
         catch (Exception e) 
         {
                e.printStackTrace();
         }
        if (stream != null) 
        {
            try 
            {
                stream.close();
            }
            catch (Exception e) 
            {
                e.printStackTrace();
            }
        }
    }

    if (requestCode == 3 && resultCode == Activity.RESULT_OK) 
    {
        getContentResolver().notifyChange(Tab1.mUri, null);
        ContentResolver cr = getContentResolver();
        try 
        {
            Tab1.mPhoto = android.provider.MediaStore.Images.Media.getBitmap(cr, Tab1.mUri);
            Second.bmp = Tab1.mPhoto;
            ByteArrayOutputStream bytes = new ByteArrayOutputStream();
            Tab1.mPhoto.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
            File direct = new File(Environment.getExternalStorageDirectory() + "/ABCGroup");
            String mydate = java.text.DateFormat.getDateTimeInstance().format(Calendar.getInstance().getTime());
            Toast.makeText(getBaseContext(), "Time :" + mydate, 5000).show();
            if(!direct.exists())
            {
                direct.mkdir();
                File file = new File(Environment.getExternalStorageDirectory()+File.separator + "/ABCGroup/image" + mydate +".jpg");
                file.createNewFile();
                FileOutputStream fo = new FileOutputStream(file);
                fo.write(bytes.toByteArray());
                fo.close();
             }
         else
            {
                File file = new File(Environment.getExternalStorageDirectory()+File.separator + "/ABCGroup/image" + mydate +".jpg");
                file.createNewFile();
                FileOutputStream fo = new FileOutputStream(file);
                fo.write(bytes.toByteArray());
                fo.close();
            }
            View mview = ABCGroup.group.getLocalActivityManager().startActivity("activity3", new Intent(ABCGroup.this, Second.class).addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY)).getDecorView();
            replaceView(mview);
        }
        catch (Exception e) 
        {
            Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT).show();
        }
    }
}

   public String getPath(Uri uri) {
       String[] projection = { MediaStore.Images.Media.DATA };
       Cursor cursor = managedQuery(uri, projection, null, null, null);
       column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
       cursor.moveToFirst();
       SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
       SharedPreferences.Editor editor = preferences.edit();
       editor.putString("data", cursor.getString(column_index) );
       editor.commit();
       View mview = ABCGroup.group.getLocalActivityManager().startActivity("activity3", new Intent(ABCGroup.this, Second.class).addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY)).getDecorView();
       replaceView(mview);

       return cursor.getString(column_index);
   }
   public void onResume()
   {
       super.onResume();
       column_index = 0;
   }
}

选项卡1.java

public class Tab1 extends ActivityGroup {
    Button gallery, camera;
    private ArrayList<View> myActivityHistory;
    ImageView iv;
    private static final int TAKE_PICTURE = 3;
    public static final int REQUEST_ID = 1;
    private static final int HALF = 2;
    public static Uri mUri;
    public static Bitmap mPhoto;
    int i = 0;
    @SuppressWarnings("deprecation")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.tab1);
         View viewToLoad = LayoutInflater.from(Tab1.this.getParent()).inflate(R.layout.tab1, null);
         Tab1.this.setContentView(viewToLoad);
        myActivityHistory = new ArrayList<View>();
        gallery = (Button)viewToLoad.findViewById(R.id.gallery);
        camera = (Button)viewToLoad.findViewById(R.id.camera);
        iv = (ImageView)viewToLoad.findViewById(R.id.iv);
        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/*");
                    ABCGroup.group.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);
                    ABCGroup.group.startActivityForResult(i, TAKE_PICTURE);
                }
            });
    }

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

}

第二.java

public class Second extends Activity {
    public static Bitmap bmp;
    Bitmap myBitmap;
    String path;
    ImageView iv;
    int count = 0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.second);
        View viewToLoad = LayoutInflater.from(Second.this.getParent()).inflate(R.layout.second, null);
        Second.this.setContentView(viewToLoad);
        Button btn = (Button)viewToLoad.findViewById(R.id.button1);
        iv = (ImageView)viewToLoad.findViewById(R.id.imageView1);
        iv.setImageBitmap(bmp);
        SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
        path = preferences.getString("data", "");
        File imgFile = new  File(path);
        if(imgFile.exists()){
            Toast.makeText(getBaseContext(),  "" + path, 1000).show();
            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() {
         super.onBackPressed();
          Intent intent = new Intent(Second.this, Tab1.class);
          Tab1 parentActivity = (Tab1)getParent();  
          parentActivity.replaceContentView("Profile", new Intent(Second.this, Tab1.class).addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY ) ); 

        }
     public void onResume()
       {
           super.onResume();
       }
}

终于我得到了答案

public void onResume()
       {
           super.onResume();
           SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
           path = preferences.getString("data", "");
           imgFile = new  File(path);
           Toast.makeText(getBaseContext(), "" + path, 2000).show();
           if(imgFile.exists())
           {
               myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
               iv.setImageBitmap(myBitmap);
           }
       }

相关内容

  • 没有找到相关文章

最新更新