我刚开始学Android。我有一个活动类,我想把它重定向到导航栏的ViewPage中的一个片段?我尝试了很多方法,但都不奏效。我希望能帮上忙!!!我的代码:有一个mainactivity.java有一个ViewPager和BottomNavigationView
public class MainActivity extends AppCompatActivity {
BottomNavigationView navigationView;
ViewPager mViewPager;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
navigationView = findViewById(R.id.nav);
mViewPager = findViewById(R.id.view_pager);
setUpViewPager();
navigationView.setOnNavigationItemReselectedListener(new BottomNavigationView.OnNavigationItemReselectedListener() {
@Override
public void onNavigationItemReselected(@NonNull MenuItem item) {
if(item.getItemId()== R.id.cld){
mViewPager.setCurrentItem(0);
} else if(item.getItemId()== R.id.tdl){
mViewPager.setCurrentItem(1);
}else if(item.getItemId()== R.id.dnr){
mViewPager.setCurrentItem(2);
}else if(item.getItemId()== R.id.us){
mViewPager.setCurrentItem(3);
}
}
});
try {
Field field = CursorWindow.class.getDeclaredField("sCursorWindowSize");
field.setAccessible(true);
field.set(null, 100 * 1024 * 1024); //the 100MB is the new size
} catch (Exception e) {
e.printStackTrace();
}
}
private void setUpViewPager() {
ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager(), FragmentStatePagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
mViewPager.setAdapter(viewPagerAdapter);
mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
switch (position){
case 1:
navigationView.getMenu().findItem(R.id.tdl).setChecked(true);
break;
case 2:
navigationView.getMenu().findItem(R.id.dnr).setChecked(true);
break;
case 3:
navigationView.getMenu().findItem(R.id.us).setChecked(true);
break;
default: navigationView.getMenu().findItem(R.id.cld).setChecked(true);
break;
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
}
ViewPageApdater类
public class ViewPagerAdapter extends FragmentStatePagerAdapter {
public ViewPagerAdapter(@NonNull FragmentManager fm, int behavior) {
super(fm, behavior);
}
@NonNull
@Override
public Fragment getItem(int position) {
switch (position){
case 1: return new ListTodo();
case 2: return new dinary_form();
case 3: return new UserInfor();
case 0:
default: return new Calendar();
}
}
@Override
public int getCount() {
return 5;
}
}
和Activity类,但我遇到一个问题:java.lang.IllegalArgumentException:找不到id 0x7F0A01D3(com.example.projectminibook:id/view_pager)的片段ListTodo的视图{bbdabd4(d10d7649-01eb-4b76-8342-fbf47138d234)id=0x7F0A01D3}
我从ActivityMain中ViewPager布局的id中获取id/view_paper。我不知道哪里错了
public class AddTodo extends AppCompatActivity {
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Button btnCancel = findViewById(R.id.btnCancel);
btnSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ListTodo fragment = new ListTodo();
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.view_pager,fragment);
fragmentTransaction.commit();
}
});
}
}
listtodo.java
public class ListTodo extends Fragment{
//mycode
}
我希望你能帮助我。非常感谢
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
Fragment fragment = null;
switch (menuItem.getItemId()) {
case R.id.cld:
fragment = new Calendar();
break;
case R.id.tdl:
fragment = new ListTodo();
break;
case R.id.dnr:
fragment = new dinary_form();
break;
case R.id.us:
fragment = new UserInfor();
break;
default:
fragment = new Calendar();
break;
}
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, fragment).commit();
return true;
}
//使用startActivity(intent)也不起作用//无论我做什么,应用程序都会崩溃
我一整天都被困在这个问题上,我似乎找不到一个适合我的情况的答案,足以让我使用。 当我单击一个列表项时,比如Blue,在Portraint中,我希望它显示一个新的片段,这是一个蓝色的屏幕,而在Sandwork中,它在半个屏幕上显示该片段,在另一个屏幕上显示listview。我正在使用ActionBarSherlock和碎片来完成这一点。 我从里到外构建了它,所以我从一个列表开始,它按照我想要的方式工
我是Android开发的新手,我在将firebase auth从SignInActivity传递到HomeFragment上有一个问题。代码是这样的 公共类SignInActivity扩展AppCompatActivity } 这是HomeFragment片段 公共类HomeFragment扩展Fragment{ } 这是logcat 致命异常:主进程:clouwiko.dev.prasiku,P
我已经完成了导航,现在进入第一个片段。在第一个片段中有两个按钮,我需要通过按下这些按钮来切换到一个新的活动。我不明白如何正确地实施它。我犯了一个错误。 代码,eror
我是android的初学者。我试图找到一种方法将文本从活动的editText传输到片段,以便结果显示在片段的textview中。
我正在建立一个简单的应用程序,我想从片段回到物理按钮的活动。我该怎么做?我试图杀死碎片,但它不起作用。