#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 оба, сэр