gpt4 book ai didi

android - 从android中的 fragment 更改当前选项卡

转载 作者:行者123 更新时间:2023-11-29 16:27:43 24 4
gpt4 key购买 nike

它有 5 个选项卡。每个选项卡都是一个 fragment 。我正在寻找的是以编程方式在选项卡之间切换。尝试了以下方法,但对我没有帮助。

=========================我的主要 Activity java================== =======

public class MainActivity extends AppCompatActivity {

private SectionsPageAdapter mSectionsPageAdapter;
private FirebaseAuth auth;
public ViewPager mViewPager;
public TabLayout tabLayout;
private final String TAG = "ListActivity";



@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
auth = FirebaseAuth.getInstance();
setContentView(R.layout.activity_main);


this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
mSectionsPageAdapter = new SectionsPageAdapter(getSupportFragmentManager());

// Set up the ViewPager with the sections adapter.
mViewPager = (ViewPager) findViewById(R.id.container);
setupViewPager(mViewPager);

tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(mViewPager);


tabLayout.getTabAt(0).setText("program");
tabLayout.getTabAt(1).setText("security");
tabLayout.getTabAt(2).setText("devices");
tabLayout.getTabAt(3).setText("network");
tabLayout.getTabAt(4).setText("sections");

BottomNavigationView bottomNavigationView = (BottomNavigationView) findViewById(R.id.bottomNavView_Bar);
BottomNavigationViewHelper.disableShiftMode(bottomNavigationView);
Menu menu = bottomNavigationView.getMenu();
MenuItem menuItem = menu.getItem(3);
menuItem.setChecked(true);
bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()){
case R.id.ic_home:

break;

case R.id.ic_message:
Intent intent1 = new Intent(MainActivity.this, ActivityOne.class);
startActivity(intent1);
break;

case R.id.ic_add:
if (auth.getCurrentUser() != null) {
createNewListItem();
}else{
Toast.makeText(getApplicationContext(), "You have to Login to Add a new Service!", Toast.LENGTH_SHORT).show();
}

break;

case R.id.ic_profile:
Intent intent3 = new Intent(MainActivity.this, ActivityThree.class);
startActivity(intent3);
break;

}


return false;
}
});



}

private void setupViewPager(ViewPager viewPager) {
SectionsPageAdapter adapter = new SectionsPageAdapter(getSupportFragmentManager());
adapter.addFragment(new Tab1Fragment());
adapter.addFragment(new Tab2Fragment());
adapter.addFragment(new Tab3Fragment());
adapter.addFragment(new Tab4Fragment());
adapter.addFragment(new Tab5Fragment());
viewPager.setAdapter(adapter);
viewPager.setCurrentItem(4);
}

==================================我的 fragment =========== ===============

public class RecyclerViewDataAdapter extends RecyclerView.Adapter<RecyclerViewDataAdapter.ItemRowHolder> {

private ArrayList<SectionDataModel> dataList;
private Context mContext;

public RecyclerViewDataAdapter(Context context, ArrayList<SectionDataModel> dataList) {
this.dataList = dataList;
this.mContext = context;
}

@Override
public ItemRowHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.list_item, null);
ItemRowHolder mh = new ItemRowHolder(v);
return mh;
}

@Override
public void onBindViewHolder(ItemRowHolder itemRowHolder, int i) {

final String sectionName = dataList.get(i).getHeaderTitle();

ArrayList singleSectionItems = dataList.get(i).getAllItemsInSection();

itemRowHolder.itemTitle.setText(sectionName);

SectionListDataAdapter itemListDataAdapter = new SectionListDataAdapter(mContext, singleSectionItems);

itemRowHolder.recycler_view_list.setHasFixedSize(true);
itemRowHolder.recycler_view_list.setLayoutManager(new LinearLayoutManager(mContext, LinearLayoutManager.HORIZONTAL, false));
itemRowHolder.recycler_view_list.setAdapter(itemListDataAdapter);


itemRowHolder.recycler_view_list.setNestedScrollingEnabled(false);


/* itemRowHolder.recycler_view_list.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
// Disallow ScrollView to intercept touch events.
v.getParent().requestDisallowInterceptTouchEvent(true);
break;
case MotionEvent.ACTION_UP:
//Allow ScrollView to intercept touch events once again.
v.getParent().requestDisallowInterceptTouchEvent(false);
break;
}
// Handle RecyclerView touch events.
v.onTouchEvent(event);
return true;
}
});*/

itemRowHolder.btnMore.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
TabLayout tabLayout = (TabLayout)v.findViewById(R.id.tabs);

Toast.makeText(v.getContext(), "click event on more, "+sectionName , Toast.LENGTH_SHORT).show();
if (sectionName=="sections"){
tabLayout.getTabAt(5).select();
}else if (sectionName=="network"){
tabLayout.getTabAt(4).select();
}else if(sectionName=="devices"){
tabLayout.getTabAt(3).select();
}else if(sectionName=="security"){
tabLayout.getTabAt(2).select();
}else {
tabLayout.getTabAt(1).select();
}


}
});

最佳答案

在 Activity 和 Fragment 之间进行通信的最简单方法是使用接口(interface)。这个想法基本上是在给定的 fragment A 中定义一个接口(interface),并让 Activity 实现该接口(interface)。

一旦它实现了该接口(interface),您就可以在它覆盖的方法中做任何您想做的事情。

有个好tutorial关于如何做这种事情。

希望对您有所帮助!

关于android - 从android中的 fragment 更改当前选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59501330/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com