как управлять новым описанием фрейма во втором действии на основе ClickListener во фрагменте?

#java #android #android-fragments

#java #Android #android-фрагменты

Вопрос:

Я делаю проект Android, реализующий fragment, и получаю проблему. вот история проблемы:

Я создал основное действие, которое удерживает фрагмент, используя макет фрагмента. Я делаю это, потому что хочу реализовать меню навигации с помощью выдвижного меню. Это отлично работает для всех этих шагов.

вот код:

 public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
private DrawerLayout drawer;
private Toolbar toolbar;
private NavigationView navigationView;
private ActionBarDrawerToggle toggle;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    toolbar = findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    drawer = findViewById(R.id.layout_drawer);
    navigationView = findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(this);

    toggle = new ActionBarDrawerToggle(this,drawer,toolbar,
            R.string.navigation_drawer_open, R.string.navigation_drawer_close);
    drawer.addDrawerListener(toggle);
    toggle.syncState();

    if (savedInstanceState == null) {
        getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                new Main_fragment()).commit();
        navigationView.setCheckedItem(R.id.home);
    }
}
  

до этого момента все работало нормально.

Затем в действии fragment я запустил Textview и вызвал новое действие. я делаю это, потому что хочу создать новый держатель для фрагментов и поместить другое меню ящика.

ее код:

 public class Main_fragment extends Fragment{
TextView t1,t2,t3,t4,t5,t6,t7;

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable final Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.main_fragment,container,false);
    //define buttons
    t1 = (TextView) v.findViewById(R.id.txt1);
    t2 = (TextView) v.findViewById(R.id.txt2);
    t3 = (TextView) v.findViewById(R.id.txt3);
    t4 = (TextView) v.findViewById(R.id.txt4);
    t5 = (TextView) v.findViewById(R.id.txt5);
    t6 = (TextView) v.findViewById(R.id.txt6);
    t7 = (TextView) v.findViewById(R.id.txt7);


    t1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //intent to the second activity
            Intent i = new Intent(getActivity(), Social_Container.class);
            startActivity(i);
        }
    });
    t2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent i = new Intent(getActivity(), Social_Container.class);
            startActivity(i);
        }
    });
    t3.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent i = new Intent(getActivity(), Social_Container.class);
            startActivity(i);
        }
    });
    t4.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent i = new Intent(getActivity(), Social_Container.class);
            startActivity(i);

            /**
            //this code just for trial fragment
            FragmentTransaction fr = getFragmentManager().beginTransaction();
            fr.replace(R.id.fragment_container, new Fragment_Pengurusan());
            fr.commit();
            **/
        }
    });
    t5.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent i = new Intent(getActivity(), Social_Container.class);
            startActivity(i);

            /**
            FragmentTransaction fr = getFragmentManager().beginTransaction();
            fr.replace(R.id.fragment_container, new Fragment_Politic());
            fr.commit();
            **/
        }
    });
    t6.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent i = new Intent(getActivity(), Social_Container.class);
            startActivity(i);

            /**
            FragmentTransaction fr = getFragmentManager().beginTransaction();
            fr.replace(R.id.fragment_container, new Fragment_Industri());
            fr.commit();
            **/
        }
    });
    t7.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent i = new Intent(getActivity(), Social_Container.class);
            startActivity(i);

            /**
            FragmentTransaction fr = getFragmentManager().beginTransaction();
            fr.replace(R.id.fragment_container, new Fragment_Awam());
            fr.commit();
            **/
        }
    });

    return v;
  }
}
  

вопрос в том, как я могу инициировать установку действия фрагмента для держателя второго класса (FrameLayout) на основе onCLick, который я установил для Textview, который я прикрепил в последнем действии фрагмента, которое находится внутри основного действия?

примечание: Я еще ничего не устанавливал внутри второго класса. Я просто хочу знать, как вызвать фрагмент внутри этого второго класса на основе ClickListener из TextView там.

Комментарии:

1. кодак, я не смог понять твой вопрос?? вы хотите вызвать fragment из другого fragment ??

2. @RakeshKumar да, сэр. использование OnClickListener. 1 фрагмент в основном действии, запустите второе действие (не фрагмент) на основе щелчка Textview и установите framelayout внутри этого второго действия для вызова фрагмента. Прошу прощения, если это непонятно: (

3. @RakeshKumar вот так, сэр, у меня есть 2 класса внутри проекта в качестве контейнера для фрагментов. в первом классе фрагмент имеет 7 текстовых представлений, которые можно щелкнуть. когда я нажимаю на каждый textview, запускается второй класс. что я хочу, так это то, что во втором классе у него есть FrameLayout для размещения фрагмента на основе щелчка textview. если я нажму tv1, запустятся второй класс и fragment_tv1. если я нажму tv2, запустятся второй класс и fragment_tv2. я не очень хорошо объясняю, сэр. спасибо за ответ

4. кодак, вы хотите запустить Activity или fragment и где именно у вас возникает проблема??

5. @RakeshKumar оба, сэр