Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Turn96
0 / 0 / 0
Регистрация: 04.04.2015
Сообщений: 83
#1

Переход из фрагмента в фрагмент - Программирование Android

19.04.2015, 17:34. Просмотров 534. Ответов 0
Метки нет (Все метки)

Здравствуйте ест такой вопрос.
нужно замутить такую вещь как переход из одного фрагмента в другой
пробывал так
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
public class manager extends Fragment{
    FragmentTransaction fragmentTransaction;
Fragment f;
MyFragment1 myFragment1;
 MyFragment2 myFragment2;
 MyFragment3 myFragment3;
 String TAG_1 = "FRAGMENT_1";
 String TAG_2 = "FRAGMENT_2";
 String TAG_3 = "FRAGMENT_3";
 String KEY_MSG_1 = "FRAGMENT1_MSG";
String KEY_MSG_2 = "FRAGMENT2_MSG";
FragmentManager myFragmentManager;
 String KEY_MSG_3 = "FRAGMENT3_MSG";
 void set(int mode){
        myFragment1 = new MyFragment1();
        myFragment2 = new MyFragment2();
        myFragment3 = new MyFragment3();
 myFragmentManager = getActivity().getFragmentManager();
    Bundle bundle = new Bundle();
    bundle.putString(KEY_MSG_1, "Заменили на первый фрагмент");
    switch(mode){
    case 1:
        f=myFragment1;
        try{
        fragmentTransaction.remove(f);}
        catch(Exception e){
            
        }
    //myFragment1.setArguments(bundle);
 
    fragmentTransaction = myFragmentManager
            .beginTransaction();
    fragmentTransaction.replace(R.id.container, myFragment1,
            TAG_2);
    fragmentTransaction.addToBackStack(null);
    fragmentTransaction.commit();
 
 
break;
    case 2:
        f=myFragment2;
        try{
        fragmentTransaction.remove(f);
        }
        catch(Exception e){
            
        }
        //myFragment2.setArguments(bundle);
 
         fragmentTransaction = myFragmentManager
                .beginTransaction();
        fragmentTransaction.replace(R.id.container, myFragment2,
                TAG_2);
        fragmentTransaction.addToBackStack(null);
        fragmentTransaction.commit();
 
    
    break;
    case 3:
        f=myFragment3;
        try{
        fragmentTransaction.remove(f);
        }
        catch(Exception e){
            
        }
    //  myFragment1.setArguments(bundle);
 
        fragmentTransaction = myFragmentManager
                .beginTransaction();
        fragmentTransaction.replace(R.id.container, myFragment3,
                TAG_3);
        fragmentTransaction.addToBackStack(null);
        fragmentTransaction.commit();
 
    
    break;
    }
}

активити
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
package com.example.test_module;
 
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
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.CheckBox;
import android.widget.FrameLayout;
import android.widget.TextView;
public class MainActivity extends Activity {
    FrameLayout container;
    static FragmentManager myFragmentManager;
    static MyFragment1 myFragment1;
    static MyFragment2 myFragment2;
    static MyFragment3 myFragment3;
    final static String TAG_1 = "FRAGMENT_1";
    final static String TAG_2 = "FRAGMENT_2";
    final static String TAG_3 = "FRAGMENT_3";
    final static String KEY_MSG_1 = "FRAGMENT1_MSG";
    final static String KEY_MSG_2 = "FRAGMENT2_MSG";
    final static String KEY_MSG_3 = "FRAGMENT3_MSG";
 
    // класс для первого фрагмента
    
 
    // класс для второго фрагмента
    
 
    // класс для третьего фрагмента
    
    
    // метод основной активности
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        container = (FrameLayout) findViewById(R.id.container);
 
        Button button1 = (Button) findViewById(R.id.button1);
        Button button2 = (Button) findViewById(R.id.button2);
        Button button3 = (Button) findViewById(R.id.button3);
final manager man = new manager(); 
button1.setOnClickListener(new  View.OnClickListener() {
 
            @Override
            public void onClick(View arg0) {
 
                /*MyFragment1 fragment = (MyFragment1) myFragmentManager
                        .findFragmentByTag(TAG_1);
 
                if (fragment == null) {
 
                    Bundle bundle = new Bundle();
                    bundle.putString(KEY_MSG_1, "Заменили на первый фрагмент");
                    myFragment1.setArguments(bundle);
 
                    FragmentTransaction fragmentTransaction = myFragmentManager
                            .beginTransaction();
                    fragmentTransaction.replace(R.id.container, myFragment1,
                            TAG_1);
                    fragmentTransaction.commit();
 
                } else {
                    fragment.setMsg("Первый фрагмент уже загружен");
                }*/
                man.set(1);
                
            }
        });
 
        button2.setOnClickListener(new View.OnClickListener() {
 
            @Override
            public void onClick(View arg0) {
 
            /*  MyFragment2 fragment = (MyFragment2) myFragmentManager
                        .findFragmentByTag(TAG_2);
 
                if (fragment == null) {
 
                    Bundle bundle = new Bundle();
                    bundle.putString(KEY_MSG_2, "Заменили на второй фрагмент");
                    myFragment2.setArguments(bundle);
 
                    FragmentTransaction fragmentTransaction = myFragmentManager
                            .beginTransaction();
                    fragmentTransaction.replace(R.id.container, myFragment2,
                            TAG_2);
                    fragmentTransaction.commit();
 
                } else {
                    fragment.setMsg("Второй фрагмент уже загружен");
                }*/
                man.set(2);
            }
        });
 
        button3.setOnClickListener(new View.OnClickListener() {
 
            @Override
            public void onClick(View arg0) {
/*
                MyFragment3 fragment = (MyFragment3) myFragmentManager
                        .findFragmentByTag(TAG_3);
 
                if (fragment == null) {
 
                    Bundle bundle = new Bundle();
                    bundle.putString(KEY_MSG_3, "Заменили на третий фрагмент");
                    myFragment3.setArguments(bundle);
 
                    FragmentTransaction fragmentTransaction = myFragmentManager
                            .beginTransaction();
                    fragmentTransaction.replace(R.id.container, myFragment3,
                            TAG_3);
                    fragmentTransaction.commit();
 
                } else {
                    fragment.setMsg("Третий фрагмент уже загружен");
                }*/
                man.set(3);
            }
        });
 
        myFragmentManager = getFragmentManager();
        myFragment1 = new MyFragment1();
        myFragment2 = new MyFragment2();
        myFragment3 = new MyFragment3();
 
        /*if (savedInstanceState == null) {
            // при первом запуске программы
            FragmentTransaction fragmentTransaction = myFragmentManager
                    .beginTransaction();
            // добавляем в контейнер при помощи метода add()
            fragmentTransaction.add(R.id.container, myFragment1, TAG_1);
            fragmentTransaction.commit();
        }*/
        man.set(1);
    }
    
    
    }
при звпуске крашится на 04-20 00:27:24.604: E/AndroidRuntime(27557): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.test_module/com.example.test_module.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.app.FragmentManager android.app.Activity.getFragmentManager()' on a null object reference
эта строка
Java
1
 myFragmentManager = getActivity().getFragmentManager();
если убрать getActivity крашится на
04-20 00:32:43.421: E/AndroidRuntime(28372): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.test_module/com.example.test_module.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.app.FragmentTransaction android.app.FragmentManager.beginTransaction()' on a null object reference

Java
1
2
    fragmentTransaction = myFragmentManager
            .beginTransaction();
самое интересное что если обьединить manager и активити в один файл даже без склеивания классов(также оставить класс активити иманагер) то все работает

как исправить????
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.04.2015, 17:34
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Переход из фрагмента в фрагмент (Программирование Android):

Переход из ListActivity в Фрагмент - Программирование Android
Всех с праздниками. Подскажите как реализовать переход из Activity в котором есть ListView во фрагмент? (в списоке listView) ...

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

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

Переход на фрагмент при открытии приложения - Программирование Android
Доброго времени суток! Недавно начал заниматься разработкой Android приложения, разобрался с NavDrawer но столкнулся с проблемой, при...

Переход на нужный фрагмент по нажатию кнопки назад - Программирование Android
Здравствуйте, у меня есть 2 фрагмента со списком ListFragment (выбираю категорию и подкатегорию) и еще другие информационные фрагменты, на...

Повторное создание фрагмента внутри фрагмента ViewPager - Программирование Android
Доброго времени суток! Использую внутри фрагмента элемент ViewPager, который сам внутри содержит еще два фрагмента-вкладки. При первом...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.04.2015, 17:34
Привет! Вот еще темы с ответами:

Из Активити в Фрагмент - Программирование Android
Как передать данные из активити в фрамгент? пробую так но выкидывает из приложения Fragment f =...

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

Фрагмент и карты - Программирование Android
прочитал что MapView должен быть обязательным образом наследован от MapActivity как можно MapActivity превратить в один из фрагментов ? ...

Не создается фрагмент - Программирование Android
При запуске приложения отображается фрагмент (fragment1) этот фрагмент имеет кнопку при нажатии на которую запускается другой фрагмент...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru