Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
1 / 1 / 1
Регистрация: 13.03.2012
Сообщений: 426

Из Активити в Фрагмент

13.05.2015, 00:27. Показов 2086. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как передать данные из активити в фрамгент?
пробую так но выкидывает из приложения
Java
1
2
Fragment f = getFragmentManager().findFragmentById(R.id.content_frame); 
                              ((ThirdFragment) f).setBmp(bmp);
надо передать bmp
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.05.2015, 00:27
Ответы с готовыми решениями:

Активити и фрагмент
в фрагменте у меня есть функция public void setBmp(Bitmap bmp) { } в активити я использую Fragment f =...

Доступ из активити в фрагмент
Здравствуйте, такой вопрос есть активити import java.io.File; import java.io.IOException; import...

Фрагмент сжимается в активити
Первый раз такое встречаю, магия какая-то, может я чего-то еще не знаю. Вот код фрагмента: <?xml version="1.0"...

12
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
13.05.2015, 00:31
Опишите подробнее для чего вам нужно передать из активити данные в фрагмент? У вас несколько фрагментов в одной активити? Если да, ЗАЧЕМ? Если нет, отвечайте на первый вопрос)
0
1 / 1 / 1
Регистрация: 13.03.2012
Сообщений: 426
13.05.2015, 00:36  [ТС]
я в активити получаю по интенту фото из галереи, точнее его fileUri и из этого fileUri делаю Bitmap, теперь мне надо этот Bitmap отправить фрагменту дабы в каждом из 3 фрагментов обрабатывать эти изображения по своему
0
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
13.05.2015, 00:47
Семан, нужна дополнительная информация - как вы отображаете фрагмент на экране, каким образом приходит интент в активити?
0
1 / 1 / 1
Регистрация: 13.03.2012
Сообщений: 426
13.05.2015, 01:07  [ТС]
Вот код и один из фрагментов, другие не тронуты пока

MainActivity
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
package ru.Arzumanyan.fotoredaktor;
 
 
import java.io.InputStream;
 
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.app.Fragment;
import android.content.Intent;
import android.content.res.Configuration;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.SeekBar;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
 
public class MainActivity extends ActionBarActivity {
 
    
    private static final int IMAGE_FROM_GALLERY = 3;
     //int OPEN_FILE;
     private static final int OPEN_FILE = 300;
    ImageView imgView;
     Intent intent;
    ThirdFragment tF = new ThirdFragment();
     
    Uri ChossefileUri;
    Uri fileUri;
    Bitmap bmp;
    private DrawerLayout myDrawerLayout;
    private ListView myDrawerList;
    private ActionBarDrawerToggle myDrawerToggle;
    String path=new String();
    InputStream input; 
    // navigation drawer title
    private CharSequence myDrawerTitle;
    // used to store app title
    private CharSequence myTitle;
    private SeekBar seekBar;
 
    private String[] viewsNames;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
            //intent= tFrag.getIntent();
        intent = new Intent(Intent.ACTION_GET_CONTENT);
        intent.setType("image/*");
        startActivityForResult(intent, OPEN_FILE); 
        imgView = (ImageView) findViewById(R.id.imageView);
        seekBar = (SeekBar)findViewById(R.id.seekBar); 
        
        //Bitmap mBitmap = BitmapFactory.decodeResource(getResources(), fileUri);
        
        myTitle =  getTitle();
        myDrawerTitle = getResources().getString(R.string.menu);
 
        // load slide menu items
        viewsNames = getResources().getStringArray(R.array.views_array);
        myDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
        myDrawerList = (ListView) findViewById(R.id.left_drawer);
 
        myDrawerList.setAdapter(new ArrayAdapter<String>(this, 
                R.layout.drawer_list_item, viewsNames));
 
        // enabling action bar app icon and behaving it as toggle button
        android.support.v7.app.ActionBar actionBar = getSupportActionBar();
        actionBar.setDisplayHomeAsUpEnabled(true);
 
        myDrawerToggle = new ActionBarDrawerToggle(this, myDrawerLayout,
                R.string.open_menu,
                R.string.close_menu
        ) {
            public void onDrawerClosed(View view) {
                getSupportActionBar().setTitle(myTitle);
                // calling onPrepareOptionsMenu() to show action bar icons
                invalidateOptionsMenu();
            }
 
            public void onDrawerOpened(View drawerView) {
                getSupportActionBar().setTitle(myDrawerTitle);
                // calling onPrepareOptionsMenu() to hide action bar icons
                invalidateOptionsMenu();
            }
        };
        myDrawerLayout.setDrawerListener(myDrawerToggle);
 
        if (savedInstanceState == null) {
            // При первой загрузке приложения мы задаем номер отображаемого фрагмента (нумерация с 0),
            //т.к. пользователь еще ничего не успел выбрать:
            displayView(0);
        }
 
        myDrawerList.setOnItemClickListener(new DrawerItemClickListener());
    }
 
   
    public void onActivityResult(int
              requestCode, int resultCode, Intent
              data) {
 
              super.onActivityResult(requestCode, resultCode, data);
             // OPEN_FILE=tF.getOpenFile(); 
              
            
              
              if (resultCode == RESULT_OK) {
                  if(requestCode == OPEN_FILE){ 
                      //выбрали рисунок из галерееи
                      ChossefileUri = data.getData(); 
                      if(ChossefileUri !=null){ 
                           fileUri = ChossefileUri;
                           
                          if(fileUri != null) 
                          {
                             //тут уже работейте с fileUri вашего файла
                             // imgView.setImageURI(fileUri); 
                              fileUri = Uri.parse(path);
                              
                              bmp =imgView.getDrawingCache();
                              //bmp =BitmapFactory.decodeFile(path);
                              
                              bmp =BitmapFactory.decodeStream(input);
                              imgView.setImageBitmap(bmp);
                              //Fragment f = getFragmentManager().findFragmentById(R.id.content_frame); 
                              //((ThirdFragment) f).setBmp(bmp);
                          }
                      }
                   } 
               }
}
 
    
    
   
    
    private class DrawerItemClickListener implements ListView.OnItemClickListener {
        @Override
        public void onItemClick(
                AdapterView<?> parent, View view, int position, long id
        ) {
            // display view for selected nav drawer item
            displayView(position);
        }
    }
 
    private void displayView(int position) {
        // update the main content by replacing fragments
        Fragment fragment = null;
        switch (position) {
            case 0:
                fragment = new FirstFragment();
                break;
            case 1:
                fragment = new SecondFragment();
                break;
            case 2:
                fragment = new ThirdFragment();
                break;
            default:
                break;
        }
 
        if (fragment != null) {
            android.app.FragmentManager fragmentManager = getFragmentManager();
            fragmentManager.beginTransaction()
                    .replace(R.id.content_frame, fragment).commit();
 
            // update selected item and title, then close the drawer
            myDrawerList.setItemChecked(position, true);
            myDrawerList.setSelection(position);
            setTitle(viewsNames[position]);
            myDrawerLayout.closeDrawer(myDrawerList);
 
        } else {
            // error in creating fragment
            Log.e("MainActivity", "Error in creating fragment");
        }
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
 
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // toggle nav drawer on selecting action bar app icon/title
        if (myDrawerToggle.onOptionsItemSelected(item)) {
            return true;
        }
        // Handle action bar actions click
        switch (item.getItemId()) {
            case R.id.action_settings:
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }
 
    /**
     * Called when invalidateOptionsMenu() is triggered
     */
    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
        // if navigation drawer is opened, hide the action items
        boolean drawerOpen = myDrawerLayout.isDrawerOpen(myDrawerList);
        menu.findItem(R.id.action_settings).setVisible(!drawerOpen);
        return super.onPrepareOptionsMenu(menu);
    }
 
    @Override
    public void setTitle(CharSequence title) {
        myTitle = title;
        getSupportActionBar().setTitle(myTitle);
    }
 
    /**
     * When using the ActionBarDrawerToggle, you must call it during
     * onPostCreate() and onConfigurationChanged()...
     */
    @Override
    protected void onPostCreate(Bundle savedInstanceState) {
        super.onPostCreate(savedInstanceState);
        // Sync the toggle state after onRestoreInstanceState has occurred.
        myDrawerToggle.syncState();
    }
 
    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        // Pass any configuration change to the drawer toggls
        myDrawerToggle.onConfigurationChanged(newConfig);
    }
}
ThirdFragment
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
package ru.Arzumanyan.fotoredaktor;
 
 
 
import android.app.Fragment;
import android.content.Intent;
import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.SeekBar;
import android.net.Uri;
import android.graphics.Bitmap;
 
public class ThirdFragment extends Fragment implements SeekBar.OnSeekBarChangeListener {
    
    ImageView imgView;
    private SeekBar seekBar;
    //Uri mfileUri;
    Bitmap mBmp;
    private int start,alpha,red,green,blue;
    
      public void gamma()
     {
        
        //layout.setBackgroundColor(Color.argb(alpha, red, green, blue));
        
     }
      
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
 
        
        
      View rootView = inflater.inflate(R.layout.fragment_third, container, false);
     
      imgView = (ImageView) rootView.findViewById(R.id.imgView);
      seekBar = (SeekBar) rootView.findViewById(R.id.seekBar); 
    //  layout = (RelativeLayout) findViewById(R.id.myScreen);
     // seekBar.setOnSeekBarChangeListener(this);
     
      
      
      //imgView.setImageURI(mfileUri); 
     
        return rootView;
    }
 
 
    @Override
    public void onProgressChanged(SeekBar arg0, int progress, boolean arg2) {
        // TODO Auto-generated method stub
        progress = seekBar.getProgress();
        
    }
 
 
    @Override
    public void onStartTrackingTouch(SeekBar arg0) {
        // TODO Auto-generated method stub
        
    }
 
 
    @Override
    public void onStopTrackingTouch(SeekBar arg0) {
        // TODO Auto-generated method stub
        
    }
    
    public void setBmp(Bitmap bmp)
    {
        mBmp=bmp;
    }
   
}
0
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
13.05.2015, 01:15
Семан, вы просто скопировали код из нескольких источников, в надежде, что у вас все заработает?
0
1 / 1 / 1
Регистрация: 13.03.2012
Сообщений: 426
13.05.2015, 01:24  [ТС]
нет почему? все работает до imgView.setImageURI(fileUri);
выводит картинку нормально, но для его обработки его надо перевести в битовую и отправить фрагментам, вот в этом у меня проблема
0
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
13.05.2015, 01:27
Семан, а что у вас есть bitmap? Я по вашему коду не нашел типа этого объекта.
0
1 / 1 / 1
Регистрация: 13.03.2012
Сообщений: 426
13.05.2015, 01:34  [ТС]
Да есть, вот Bitmap bmp;
0
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
13.05.2015, 01:36
Семан, и правда, не заметил)
0
1 / 1 / 1
Регистрация: 13.03.2012
Сообщений: 426
13.05.2015, 01:50  [ТС]
бывает
0
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
13.05.2015, 02:25
Семан, можете передавать данные из активности во фрагмент в момент его создания. Это делается через конструктор newInstance с параметрами.
Также можно передавать данные после создания. Для этого можно написать, например, listener или использовать findFragmentById, как вы и хотели.
0
 Аватар для YuraAAA
1605 / 1337 / 291
Регистрация: 25.10.2009
Сообщений: 3,487
Записей в блоге: 2
13.05.2015, 10:47
Семан, не самый красивый вариант, но:

1. Интерфейс

Java
1
2
3
4
5
6
7
import android.graphics.Bitmap;
 
public interface IImageCompleteListener {
 
    void onComplete(Bitmap bitmap);
 
}
2. Manager

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
import android.graphics.Bitmap;
 
public class CompleteManager {
 
    public static IImageCompleteListener listener;
 
    public static void callComplete(Bitmap bitmap) {
        if (listener != null) {
            listener.onComplete(bitmap);
        }
    }
 
}
3. Во фрагменте:

Java
1
2
3
4
5
6
7
8
9
10
@Override
    public void onResume() {
        super.onResume();
        CompleteManager.listener = new IImageCompleteListener() {
            @Override
            public void onComplete(Bitmap bitmap) {
                //Обработка изображения                
            }
        };
    }
4. Вызов из активити:

Java
1
CompleteManager.callComplete(bmp);
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.05.2015, 10:47
Помогаю со студенческими работами здесь

Передать SearchView из активити во фрагмент
У меня есть SearchView в активити и тесть фрагмент который запускается через транзакцию. И как мне правильно передать SearchView из...

Переход из уведомления в фрагмент активити
Здравствуйте.Вывожу уведомление в статус бар, нужно чтобы по нажатию на него открывался фрагмент активити. Фрагменты использовал для...

Активный фрагмент внутри активити
Всем привет. Есть активити с content_frame, есть фрагмент. В Activity фрагмента gridView При старте фрагмента приложение вылетает с...

Переход через фрагмент на активити
Добрый день ! Какой код должен быть чтобы на &quot;активити 1&quot; с открытым фрагментом , на котором есть кнопка при нажатии на которую активити1...

Что лучше использовать фрагмент или активити
Ребят всем привет. Появился проект и возник некоторый вопрос, сейчас попробую описать. В проекте есть navigation view, и к нему нужно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru