如何将图像从片段发送到活动(AndroidStudio)?

时间:2017-11-09 15:35:00

标签: android android-studio firebase-realtime-database

public class TestFragment extends Fragment{
private FeatureCoverFlow coverFlow;
private FoodAdapter foodAdapter;
private List<Food> foodList = new ArrayList<>();
private TextSwitcher mTitle;
private Context mContext;
private Dialog myDialog;

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    final View view = inflater.inflate(R.layout.fragment_test, container, false);
    initData();
    mTitle = (TextSwitcher)view.findViewById(R.id.mtitle);

    myDialog = new Dialog(getContext());

    mTitle.setFactory(new ViewSwitcher.ViewFactory() {
        @Override
        public View makeView() {
            LayoutInflater inflater = LayoutInflater.from(getContext());
            TextView txt = (TextView)inflater.inflate(R.layout.layout_title,null);
            return txt;
        }
    });

    final Animation in = AnimationUtils.loadAnimation(getContext(), R.anim.slide_in_top);
    Animation out = AnimationUtils.loadAnimation(getContext(), R.anim.slide_out_bottom);

    mTitle.setInAnimation(in);
    mTitle.setOutAnimation(out);

    foodAdapter = new FoodAdapter(foodList,getContext());


    coverFlow = (FeatureCoverFlow)view.findViewById(R.id.coverFlow);
    coverFlow.setAdapter(foodAdapter);

    coverFlow.setOnScrollPositionListener(new FeatureCoverFlow.OnScrollPositionListener() {
        @Override
        public void onScrolledToPosition(int position) {
            mTitle.setText(foodList.get(position).getCaption());
        }

        @Override
        public void onScrolling() {

        }
    });


    /**
    coverFlow.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
            Intent intent= new Intent(getContext(), FoodDetailActivity.class);
            intent.putExtra("Food INdex",i);
            startActivity(intent);
        }
    });**/
    coverFlow.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
            Log.d(TAG, "onItemClick: selected Food:" + foodList.get(position).toString());

            Intent intent = new Intent(getContext(),FoodDetailActivity.class);

            startActivity(intent);
        }
    });


    return view;

}





public void initData(){



    final FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();

    DatabaseReference DB = FirebaseDatabase.getInstance().getReference().child("photos");
    DB.addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String s) {
            if (dataSnapshot.exists()){
                Food item = new Food(dataSnapshot.getKey(), dataSnapshot.child("image_path").getValue().toString(),dataSnapshot.child("caption").getValue().toString());
                foodList.add(item);
                foodAdapter.notifyDataSetChanged();
            }
        }

        @Override
        public void onChildChanged(DataSnapshot dataSnapshot, String s) {

        }

        @Override
        public void onChildRemoved(DataSnapshot dataSnapshot) {

        }

        @Override
        public void onChildMoved(DataSnapshot dataSnapshot, String s) {

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
}

我想点击片段中的图片(Firebase数据库) 而且我希望在新的活动中看到完全相同的图像......

public class FoodDetailActivity extends AppCompatActivity {

KenBurnsView food_image;
TextView food_title, food_caption;


private List<Food> foodList = new ArrayList<>();
private FoodAdapter foodAdapter;


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

    food_image =(KenBurnsView)findViewById(R.id.food_image);
    food_title = (TextView)findViewById(R.id.food_title);
    food_caption =(TextView)findViewById(R.id.food_summary);




    if (getIntent() != null){

        int food_index = getIntent().getIntExtra("Food_Index", -1);
        if (food_index != -1)
            loadFoodDetail(food_index);
        }
    }





public void loadFoodDetail(int index) {


    Food food = Common.foodList.get(index);


    Picasso.with(getBaseContext()).load(food.getImage_path()).into(food_image);
    food_caption.setText(food.getCaption());
    food_title.setText(food.getCaption());
}

......我读了很多教程,但我不知道为什么,但我不理解。 所以,如果有人有想法,请分享 我试图用意图去做,但它没有用 也许我需要一个新的AdapterClass用于我的Activity而不是有另一个问题,我怎么能得到相同的imageURL?

1 个答案:

答案 0 :(得分:0)

通过Intent通过片段将值传递给activity,并将其设置为Activity的Imageview。