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

Взаимодействие Fragment-ов через Activity (interface) - Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Android Ошибка в v23 сразу после создания проекта http://www.cyberforum.ru/android-dev/thread1647392.html
Я только создал новый проект, а Android Studio уже закидывает меня ошибками. Error:(1) Error retrieving parent for item: No resource found that matches the given name 'android:TextAppearance.Material.Widget.Button.Inverse'. Как исправить? Спасибо за помощь!
Android Затруднение с переключением между активностями Чтобы лучше понимать решил написать приложение расписания пар в университете и наткнулся на одну проблему. Создал одну активность в которой 7 кнопок при нажатии на одну из них происходит переход на другую активность соответсвующую нажатому дню. Эта активность имеет TableLayout, TableRow, TextView. В IDE все это выглядит хорошо, но при запуске либо на эмуляторе либо на физическом устройстве просто... http://www.cyberforum.ru/android-dev/thread1647306.html
Android Navigation drawer
Как так подключить navigation drawer чтобы он был доступен не в одном а во всех или в нескольких активити приложения и во всех этих активити чтобы также не нарушался свой контент кнопки, картинки и тд после добавления navigation drawer ??
Android Переход между окнами
Читая книгу по андройду и юзая AndroidStudio воздник вопрос* при создании нового проекта в андройде при указании формы BlankActivity выстраивается код из activity_main.xml и content_main.xml причем 2ое вложенно в 1ое, т.е. грузиться основной экран в котором найдя строку <include layout="@layout/content_main" /> грузиться 2ой экран по сути ограничивая написание меню в activity_main
Android Actor с использованием фреймворка Libgdx http://www.cyberforum.ru/android-dev/thread1647063.html
В общем, есть 2 класса: actor и point, во втором пока просто текстура и координаты. В первом есть актер MouseActor, который просто рисует текстуру из point. Есть листенер MouseActorListener, который при нажатие на текстуру увеличивает её. Программа компилируется, текстура рисуется, но она не реагирует на нажатия. 1 класс. package com.mygdx.game; import com.badlogic.gdx.Game; import...
Android Image OnTouchListener crash Делаю своё первое приложение под Android и столкнулся с следующей проблемой - программа вылетает при добавлении в неё следующего кода (colorPicker – это ImageView): colorPicker.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch(event.getAction()) { case... подробнее

Показать сообщение отдельно
Jack_killer
0 / 0 / 0
Регистрация: 25.01.2016
Сообщений: 3

Взаимодействие Fragment-ов через Activity (interface) - Android

26.01.2016, 00:15. Просмотров 370. Ответов 2
Метки (Все метки)

Ребята гляньте пожалуйста не замыленным глазом на код.
Пытаюсь понять как организовать взаимодействие фрагментов с помощью активити через интерфейс, но "...что-то пошло не так...", второй день смотрю и не вижу.
Цель:
на первом фрагменте есть TextView и Button - который запускает второй фрагмент
на втором EditText и Button - который передает введенный текст первому фрагменту

Сделал:
фрагменты запускаются как нада, но текст из 2ого фрагмента не отображается на первом.
ошибок не высвечиваются
ссылка на гитт

Activity
Кликните здесь для просмотра всего текста
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
package com.example.jack.interfacecallbackfragment;
 
import android.app.FragmentManager;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
 
public class MainActivity extends AppCompatActivity implements FirstFragment.CallBackFirstFragment, SecondFragment.CallBackSecondFragment {
    FirstFragment firstFragment;
    SecondFragment secondFragment;
    FragmentManager fragmentManager;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        firstFragment = FirstFragment.newInstance();
        secondFragment = SecondFragment.newInstance();
        fragmentManager = getFragmentManager();
        if (savedInstanceState == null) {
            fragmentManager.beginTransaction()
                    .add(R.id.fragment, firstFragment, FirstFragment.TAG_FRAGMENT)
                    .addToBackStack(null)
                    .commit();
        }
    }
 
    @Override
    public void createFragment2() {
        getFragmentManager()
                .beginTransaction()
                .replace(R.id.fragment, secondFragment)
                .commit();
    }
 
    @Override
    public void sendMessageFromFirstFragment(String msg) {
        fragmentManager.beginTransaction()
                .replace(R.id.fragment, firstFragment)
                .commit();
        if (firstFragment != null) {
            firstFragment.editTextView(msg);
        }
    }
}
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.jack.interfacecallbackfragment.MainActivity">
 
    <FrameLayout
        android:id="@+id/fragment"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</RelativeLayout>

FirstFragment
Кликните здесь для просмотра всего текста
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
package com.example.jack.interfacecallbackfragment;
 
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
 
/**
 * Created by jack on 23.01.16.
 */
public class FirstFragment extends Fragment {
    public static final String TAG_FRAGMENT = "first fragment";
 
    TextView tv;
    Button btn;
    CallBackFirstFragment callBackFirstFragment;
    private String SAVE_TAG = "save";
 
    public static FirstFragment newInstance() {
        FirstFragment firstFragment = new FirstFragment();
        return firstFragment;
    }
 
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_first, container, false);
        return view;
    }
 
    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        initInterface();
        initView(view);
        initListener();
 
    }
 
    private void initInterface() {
        callBackFirstFragment = (CallBackFirstFragment) getActivity();
    }
 
    private void initView(View view) {
        tv = (TextView) view.findViewById(R.id.tv);
        btn = (Button) view.findViewById(R.id.btn_second_fragment);
    }
 
    private void initListener() {
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                callBackFirstFragment.createFragment2();
            }
        });
    }
 
    public void editTextView(String string) {
        tv.setText(string);
    }
 
    public interface CallBackFirstFragment {
        void createFragment2();
    }
}
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
 
    <TextView
        android:id="@+id/tv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="text geting from second fragment" />
 
    <Button
        android:id="@+id/btn_second_fragment"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Start Second Fragment" />
</LinearLayout>

SecondFragment
Кликните здесь для просмотра всего текста
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
package com.example.jack.interfacecallbackfragment;
 
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
 
public class SecondFragment extends Fragment {
 
    public static final String TAG_FRAGMENT = "second fragment";
    CallBackSecondFragment callBackSecondFragment;
    private TextView et;
    private Button btn;
 
    public static SecondFragment newInstance() {
        return new SecondFragment();
    }
 
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_second, container, false);
    }
 
    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        initInterface();
        initView(view);
        initListener();
 
    }
 
    private void initInterface() {
        callBackSecondFragment = (CallBackSecondFragment) getActivity();
    }
 
    private void initView(View view) {
        et = (TextView) view.findViewById(R.id.et);
        btn = (Button) view.findViewById(R.id.btn_send);
    }
 
    private void initListener() {
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                callBackSecondFragment.sendMessageFromFirstFragment(et.getText().toString());
            }
        });
    }
 
 
    public interface CallBackSecondFragment {
        void sendMessageFromFirstFragment(String msg);
    }
 
 
}
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
 
    <EditText
        android:id="@+id/et"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="enter message" />
 
    <Button
        android:id="@+id/btn_send"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="send message from first fragment" />
</LinearLayout>
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 03:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru