小编Iva*_*vic的帖子

防止同一碎片堆叠多次(addToBackStack)

我有一个Activity与三个片段可以打电话给他们一个,Ç.Fragment 一个被称为在活动onCreate().

FragmentA fragA = new FragmentA();
FragmentTransaction transaction = manager.beginTransaction();
transaction.add(R.id.activity2_layout, fragA, "A");
transaction.commit();
Run Code Online (Sandbox Code Playgroud)

当按下某些按钮时,会被片段BC替换,并且FragmentTransaction会调用addToBackStack().

FragmentB fragB = new FragmentB(); //or C
FragmentTransaction transaction = manager.beginTransaction();
transaction.replace(R.id.activity2_layout, fragB, "B");  //or C
transaction.addToBackStack("B"); //or C
transaction.commit();
Run Code Online (Sandbox Code Playgroud)

但是让我说我连续三次打电话给Fragment B,我怎么能阻止它自己堆叠呢?同时我希望这是可能的:B调用> C调用> B调用 - 但是当我尝试返回时我希望B只打开一次(C < B)而不是(B < C < B) .所以基本上删除第一个backStack与新的.

android fragment android-fragments back-stack fragment-backstack

7
推荐指数
1
解决办法
6218
查看次数

使用Picasso从内部存储装载图像

我将一些JPEG图像保存到手机存储器中,我想将使用的毕加索加载到ImageView中.我遇到了麻烦,无论我尝试什么,我只是无法加载图像,ImageView最终都是空白.

以下是我保存和检索图像的方法:

 private void saveImage(Context context, String name, Bitmap bitmap){
    name=name+".JPG";
    FileOutputStream out;
    try {
        out = context.openFileOutput(name, Context.MODE_PRIVATE);
        bitmap.compress(Bitmap.CompressFormat.JPEG, 80, out);
        out.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}


private Bitmap getSavedImage(Context context, String name){
    name=name+".JPG";
    try{
        FileInputStream fis = context.openFileInput(name);
        Bitmap bitmap = BitmapFactory.decodeStream(fis);
        fis.close();
        return bitmap;
    }
    catch(Exception e){
        e.printStackTrace();
    }
    return null;
}
Run Code Online (Sandbox Code Playgroud)

如您所见,返回的图像是位图,如何使用picasso将其加载到imageview中?我知道我可以将位图加载到这样的图像中:

imageView.setImageBitmap(getSavedImage(this,user.username+"_Profile"));

但我有一个使用毕加索的课程使用图片(用户个人资料照片),所以我需要用毕加索加载它.

android image file bitmap picasso

4
推荐指数
1
解决办法
8196
查看次数