Форум программистов, компьютерный форум CyberForum.ru

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

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

Открытие фрагмента NawDrawer - Программирование Android

16.03.2016, 20:36. Просмотров 527. Ответов 27

Доброго времени суток форумчане, кто может помочь, нужно чтобы при открытии приложения открывался фрагмент как будто мы сами на него перешли или другим возможным образом.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.03.2016, 20:36     Открытие фрагмента NawDrawer
Посмотрите здесь:

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

Запуск активности из фрагмента - Программирование Android
Доброго всем. Возникла такая проблема, для запуска активности хоста из фрагмента по нажатию кнопки(mPlayButton), использую...

Смена фрагмента в контейнере - Программирование Android
Всем доброго вечера! Проблема такая - есть Navigation Draver, по кликам в котором я хочу менять содержимое контейнера, т.е. реплейсить...

Доступ к виджету фрагмента - Программирование Android
Пытаюсь добавить фрагмент в контейнер и получить доступ к его кнопке frag1 = new Fragment1(); getSupportFragmentManager() ...

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

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

Обращение к элементам фрагмента из активити - Программирование Android
Есть необходимость в программе менять значение TextView находящегося во фрагменте. Фрагмент должен выводится в контейнер. И затем я...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OlegJV
102 / 102 / 29
Регистрация: 13.03.2016
Сообщений: 471
16.03.2016, 23:40     Открытие фрагмента NawDrawer #2
Я все понял. Меня сегодня решили довести до кондрашки, при чем как на работе, так и тут, на форуме.

Тебе надо открыть фрагмент или NavigationDrawer? Я не слишком жестоко поступаю, выдавая страшный секрет, что NavigationDrawer это не фрагмент?

Java
1
drawer.openDrawer(navigationView);
Есть такой вот метод, совершенно случайно нашел.

Добавлено через 40 секунд
P.S: Деда Мороза тоже не существует...
Vladislavij
0 / 0 / 0
Регистрация: 04.02.2016
Сообщений: 15
17.03.2016, 08:25  [ТС]     Открытие фрагмента NawDrawer #3
Нужно открыть фрагмент при запуске приложения, NawDrawer указал чтоб понятней было откуда фрагмент, наверно зря))))
OlegJV
102 / 102 / 29
Регистрация: 13.03.2016
Сообщений: 471
17.03.2016, 08:44     Открытие фрагмента NawDrawer #4
Ну тогда, возможно (возможно, это просто мои подозрения), в Активити у тебя должны быть строки типа:

Java
1
2
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
А еще, возможно, в разметке Активити у тебя должен быть контейнер для фрагментов, например такой:

Java
1
container = (FrameLayout) findViewById(R.id.container);
И это еще не все. В Активити должен быть метод типа:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@Override
    public boolean onNavigationItemSelected(MenuItem item) {
        int id = item.getItemId();
 
        if (id == R.id.пункт_меню_который_тебе_нужен) {
               FragmentManager ft = getFragmentManager().beginTransaction();
 
               ft.add(R.id.container, myFragment); // если контейнер был пустой
               // или
               ft.replace(R.id.container, myFragment); // если в контейнере был другой фрагмент
 
               ft.commit();
        }
 
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        drawer.closeDrawer(GravityCompat.START);
        return true;
    }
Вот так вот все сложно, да. А что делать?
Vladislavij
0 / 0 / 0
Регистрация: 04.02.2016
Сообщений: 15
17.03.2016, 09:48  [ТС]     Открытие фрагмента NawDrawer #5
Это всё есть, чтоб было понятнее вот код

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
public class MainActivity extends AppCompatActivity
        implements NavigationView.OnNavigationItemSelectedListener {
 
    FragmentCategory fcategories;
    FragmentMarker fmarker;
    FragmentNew fnew;
    FragmentSearch fsearch;
    FragmentSend fsend;
    FragmentShare fshare;
    FragmentMain fmain;
 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
 
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
 
        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
            }
        });
 
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
        drawer.setDrawerListener(toggle);
        toggle.syncState();
 
        NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
        navigationView.setNavigationItemSelectedListener(this);
 
        fcategories = new FragmentCategory();
        fmarker = new FragmentMarker();
        fnew = new FragmentNew();
        fsearch = new FragmentSearch();
        fsend = new FragmentSend();
        fshare = new FragmentShare();
        fmain = new FragmentMain();
 
 
    }
 
 
    @Override
    public void onBackPressed() {
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        if (drawer.isDrawerOpen(GravityCompat.START)) {
            drawer.closeDrawer(GravityCompat.START);
        } else {
            super.onBackPressed();
        }
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
 
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
 
        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }
 
        return super.onOptionsItemSelected(item);
    }
 
    @SuppressWarnings("StatementWithEmptyBody")
    @Override
    public boolean onNavigationItemSelected(MenuItem item) {
        // Handle navigation view item clicks here.
        int id = item.getItemId();
 
        FragmentTransaction ftrans = getFragmentManager().beginTransaction();
 
 
 
        if (id == R.id.nav_main) {
            ftrans.replace(R.id.container, fmain);
        } else if (id == R.id.nav_camera) {
            ftrans.replace(R.id.container, fnew);
        } else if (id == R.id.nav_gallery) {
            ftrans.replace(R.id.container, fcategories);
        } else if (id == R.id.nav_slideshow) {
            ftrans.replace(R.id.container, fsearch);
        } else if (id == R.id.nav_manage) {
            ftrans.replace(R.id.container, fmarker);
        } else if (id == R.id.nav_share) {
            ftrans.replace(R.id.container, fshare);
        } ftrans.commit();
 
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        drawer.closeDrawer(GravityCompat.START);
        return true;
    }
OlegJV
102 / 102 / 29
Регистрация: 13.03.2016
Сообщений: 471
17.03.2016, 10:13     Открытие фрагмента NawDrawer #6
Ну а в чем проблема тогда?

Добавлено через 9 минут
Что у тебя изначально в контейнере находится? Ты случаем в xml туда фрагмент не засунул?

Добавлено через 5 минут
Код xml лэйаута покажь
Vladislavij
0 / 0 / 0
Регистрация: 04.02.2016
Сообщений: 15
17.03.2016, 10:24  [ТС]     Открытие фрагмента NawDrawer #7
Нет, вот то что находиться в xml главного активити
XML
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
<?xml version="1.0" encoding="utf-8"?>
 
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:openDrawer="start">
    
    <include
        layout="@layout/app_bar_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
 
    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/nav_header_main"
        app:menu="@menu/activity_main_drawer" />
 
</android.support.v4.widget.DrawerLayout>
OlegJV
102 / 102 / 29
Регистрация: 13.03.2016
Сообщений: 471
17.03.2016, 10:26     Открытие фрагмента NawDrawer #8
Меня интересует твой R.id.container. Он где?
Vladislavij
0 / 0 / 0
Регистрация: 04.02.2016
Сообщений: 15
17.03.2016, 11:10  [ТС]     Открытие фрагмента NawDrawer #9
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
public class FragmentMain extends android.app.Fragment {
    // TODO: Rename parameter arguments, choose names that match
    // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
    private static final String ARG_PARAM1 = "param1";
    private static final String ARG_PARAM2 = "param2";
 
    // TODO: Rename and change types of parameters
    private String mParam1;
    private String mParam2;
 
    private OnFragmentInteractionListener mListener;
 
    public FragmentMain() {
        // Required empty public constructor
    }
 
    /**
     * Use this factory method to create a new instance of
     * this fragment using the provided parameters.
     *
     * @param param1 Parameter 1.
     * @param param2 Parameter 2.
     * @return A new instance of fragment FragmentMain.
     */
    // TODO: Rename and change types and number of parameters
    public static FragmentMain newInstance(String param1, String param2) {
        FragmentMain fragment = new FragmentMain();
        Bundle args = new Bundle();
        args.putString(ARG_PARAM1, param1);
        args.putString(ARG_PARAM2, param2);
        fragment.setArguments(args);
        return fragment;
    }
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getArguments() != null) {
            mParam1 = getArguments().getString(ARG_PARAM1);
            mParam2 = getArguments().getString(ARG_PARAM2);
        }
    }
 
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_main, container, false);
    }
 
    // TODO: Rename method, update argument and hook method into UI event
    public void onButtonPressed(Uri uri) {
        if (mListener != null) {
            mListener.onFragmentInteraction(uri);
        }
    }
 
    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        if (context instanceof OnFragmentInteractionListener) {
            mListener = (OnFragmentInteractionListener) context;
        } else {
            throw new RuntimeException(context.toString()
                    + " must implement OnFragmentInteractionListener");
        }
    }
 
    @Override
    public void onDetach() {
        super.onDetach();
        mListener = null;
    }
 
    /**
     * This interface must be implemented by activities that contain this
     * fragment to allow an interaction in this fragment to be communicated
     * to the activity and potentially other fragments contained in that
     * activity.
     * <p/>
     * See the Android Training lesson <a href=
     * "http://developer.android.com/training/basics/fragments/communicating.html"
     * >Communicating with Other Fragments</a> for more information.
     */
    public interface OnFragmentInteractionListener {
        // TODO: Update argument type and name
        void onFragmentInteraction(Uri uri);
    }
}
А вот xml если нужен
XML
1
2
3
4
5
6
7
8
9
10
11
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.politech.feelbuy.fragments.FragmentMain">
 
    <!-- TODO: Update blank fragment layout -->
 
 
 
</FrameLayout>
Добавлено через 24 минуты
я правильно понял?
OlegJV
102 / 102 / 29
Регистрация: 13.03.2016
Сообщений: 471
17.03.2016, 12:23     Открытие фрагмента NawDrawer #10
Нет, неправильно. Где находится контейнер?

Добавлено через 10 минут
Более развернутый вопрос (ох, откуда у меня столько терпения):
У тебя в коде есть строчка:

Java
1
ftrans.replace(R.id.container, fmain);
В ней ты ссылаешься на некий элемент управления с id "R.id.container"

Так вот, меня интересует, что это за элемент, где он находится, какой код xml у него. Я понятно спросил?
Vladislavij
0 / 0 / 0
Регистрация: 04.02.2016
Сообщений: 15
17.03.2016, 12:44  [ТС]     Открытие фрагмента NawDrawer #11
Кажется понял, вот его xml
XML
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
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
 
    <group android:checkableBehavior="single">
        <item
            android:id="@+id/nav_main"
            android:icon="@drawable/circle"
            android:title="@string/main_item" />
        <item
            android:id="@+id/nav_camera"
            android:icon="@drawable/newicon"
            android:title="@string/new_item" />
        <item
            android:id="@+id/nav_gallery"
            android:icon="@drawable/categ"
            android:title="@string/categories_item" />
        <item
            android:id="@+id/nav_slideshow"
            android:icon="@drawable/searchicon"
            android:title="@string/search_item" />
        <item
            android:id="@+id/nav_manage"
            android:icon="@drawable/marcericon"
            android:title="@string/marker_item" />
    </group>
 
    <item android:title="@string/social">
        <menu>
            <item
                android:id="@+id/nav_share"
                android:icon="@drawable/ic_menu_share"
                android:title="@string/share_item" />
            <item
                android:id="@+id/nav_send"
                android:icon="@drawable/ic_menu_send"
                android:title="@string/send_item" />
        </menu>
    </item>
 
</menu>
Pablito
2419 / 1864 / 583
Регистрация: 12.05.2014
Сообщений: 6,604
Завершенные тесты: 1
17.03.2016, 12:48     Открытие фрагмента NawDrawer #12
нет, надо показать app_bar_main.xml
и там будет нечно с id = container
и файл этого контейнера тоже надо по идее
OlegJV
102 / 102 / 29
Регистрация: 13.03.2016
Сообщений: 471
17.03.2016, 12:57     Открытие фрагмента NawDrawer #13
За что? Что я тебе плохого сделал?

Добавлено через 7 минут
Давай проще. Покажи нам файл разметки xml, в котором есть строчка:

Java
1
android:id="@+id/container"
Vladislavij
0 / 0 / 0
Регистрация: 04.02.2016
Сообщений: 15
17.03.2016, 12:58  [ТС]     Открытие фрагмента NawDrawer #14
Извеняюсь за потраченное время

XML
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
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:context="com.example.politech.feelbuy.MainActivity">
 
    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/AppTheme.AppBarOverlay">
 
        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:popupTheme="@style/AppTheme.PopupOverlay" />
 
    </android.support.design.widget.AppBarLayout>
 
    <include layout="@layout/content_main" />
 
 
    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|end"
        android:layout_margin="@dimen/fab_margin"
        android:src="@android:drawable/ic_dialog_email" />
 
</android.support.design.widget.CoordinatorLayout>
OlegJV
102 / 102 / 29
Регистрация: 13.03.2016
Сообщений: 471
17.03.2016, 13:04     Открытие фрагмента NawDrawer #15
Паблито, Судя по всему, от создал проект по стандартному шаблону. По-моему, контейнер там надо совать в content_main

Добавлено через 1 минуту
Vladislavij, ничего-ничего, это уже даже любопытно становится. Ты вот что нам сейчас прислал? Там есть та строчка, про которую я спрашивал?

Добавлено через 1 минуту
Кстати, надо писать ИзвИняюсь

Добавлено через 2 минуты
Так, у меня дела появились, будем прекращать. Открой файл content_main.xml. Если там есть TextView с Hello World, выкинь его нафиг и вместо него вставь:

Java
1
2
3
4
5
6
7
    
<FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/container">
 
</FrameLayout>
Pablito
2419 / 1864 / 583
Регистрация: 12.05.2014
Сообщений: 6,604
Завершенные тесты: 1
17.03.2016, 13:07     Открытие фрагмента NawDrawer #16
что тут?
XML
1
<include layout="@layout/content_main" />
Vladislavij
0 / 0 / 0
Регистрация: 04.02.2016
Сообщений: 15
17.03.2016, 13:11  [ТС]     Открытие фрагмента NawDrawer #17
Отображает content_main в activity_main
OlegJV
102 / 102 / 29
Регистрация: 13.03.2016
Сообщений: 471
17.03.2016, 13:14     Открытие фрагмента NawDrawer #18
Файл content_main в студию
Vladislavij
0 / 0 / 0
Регистрация: 04.02.2016
Сообщений: 15
17.03.2016, 13:15  [ТС]     Открытие фрагмента NawDrawer #19
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:id="@+id/container"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="com.example.politech.feelbuy.MainActivity"
    tools:showIn="@layout/app_bar_main">
 
</FrameLayout>
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.03.2016, 13:22     Открытие фрагмента NawDrawer
Еще ссылки по теме:

Активити отрабатывает быстрее фрагмента - Программирование Android
Непонятно поведение фрагмента (FragmentPagerAdapter). Вызываю активити из уведомления, из onCreate вызываю метод meUpdate, где хочу...

Обращение к View элементам фрагмента - Программирование Android
Добрый день. Нужна помощь, уже не знаю что делать. Имеется три идентичных фрагмента с одним TextView (id = textview1). Имеется...

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

Не могу добратьс из фрагмента к Preference - Программирование Android
Хочу заполнить из фрагмента данные из Preference. Ругается в строке 39. Подчеркивает - MODE_PRIVATE Пишет - MODE_PRIVATE cannot be...

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


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

Или воспользуйтесь поиском по форуму:
Pablito
2419 / 1864 / 583
Регистрация: 12.05.2014
Сообщений: 6,604
Завершенные тесты: 1
17.03.2016, 13:22     Открытие фрагмента NawDrawer #20
Я тему не читал особо, но насколько понял, надо что бы при старте приложения уже был загружен фрагмент.
Вижу, что в onCreate создается пачка фрагментов.
Ну вот например после
Java
1
fnew = new FragmentNew();
можно написать что-то типа
Java
1
getSupportFragmentManager().beginTransaction().add(fnew, R.id.container, null).commit();
Yandex
Объявления
17.03.2016, 13:22     Открытие фрагмента NawDrawer
Ответ Создать тему
Опции темы

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