У меня есть Fragment
(CreaStanzaFragment) с ImageButton
. У этого ImageButton
есть фотография. Теперь, когда я нажимаю на эту кнопку изображения, он открывает новый класс (галерея, действие с большим количеством изображений). Когда я нажимаю на одно из этих изображений, мне нужно, чтобы ImageButton
(во фрагменте) изменилось и открыл этот фрагмент с этим новым изображением в imagebutton
.
CreaStanzaFragment принадлежит навигационному рисунку. Это код фрагмента:
public class CreaStanzaFragment extends Fragment {
public CreaStanzaFragment(){}
ImageButton icon;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.activity_log_creastanza, container, false);
return rootView;
}
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
icon = (ImageButton) view.findViewById(R.id.newicon);
icon.setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(getContext(), Galleria.class));
}
});
}
здесь я размещаю только важные части Galleria
public class Galleria extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.gallery_main); //where all the images are located
recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
// ......
recyclerView.addOnItemTouchListener(new GalleryAdapter.RecyclerTouchListener(getApplicationContext(), recyclerView, new GalleryAdapter.ClickListener() {
@Override
public void onClick(View view, int position) {
Bundle bundle = new Bundle();
bundle.putSerializable("images", images);
bundle.putInt("position", position);
Image image = images.get(position);
String ilnome = inomi.get(position);
Log.i("ILNOME", ilnome);
// What i need to do here to change pictures of ImageButton? How can i open Fragment?
ImageButton icon = (ImageButton) findViewById(R.id.newicon); //loceted in Fragment (CreaStanzaFragment)
imageButton.setBackgroundResource(0);
Glide.with(getApplicationContext()).load(image.getMedium())
.thumbnail(0.5f)
.crossFade()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(imageButton);
fragmentTransaction.commit();
}
С этим кодом:
setContentView(R.layout.activity_log_creastanza);
ImageButton imageButton = (ImageButton) findViewById(R.id.newicon);
imageButton.setBackgroundResource(0);
Glide.with(getApplicationContext()).load(image.getMedium())
.thumbnail(0.5f)
.crossFade()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(imageButton);
Когда я открываю CreaStanzaFragment:
Когда я нажимаю на синюю картинку (открывает действие Galleria)
Когда я нажимаю на 1 из изображений:
ПОЧЕМУ?
setContentView
в своей деятельности в галерее, она, скорее всего, заменит представление активности в галерее содержимым вашего фрагмента. ТакжеImageButton icon = (ImageButton) findViewById(R.id.newicon)
будет искать не в иерархии просмотра фрагментов, а вGalleria.this.view
. Таким образом, вGalleria
вам просто нужна ссылка на текущийCreaStanzaFragment
илиImageButton
, чтобыGalleria
мог получить доступ к своему представлению и изменить фон кнопки. - person makadev   schedule 21.09.2016