activity_viber.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="match_parent"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
tools:menu="@menu/home_menu">
<android.support.design.widget.TabLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/tablayout"
android:background="@color/colorPrimaryDark"/>
<android.support.v4.view.ViewPager
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/viewpager"/>
</LinearLayout>
vi部二.Java
public class Viber extends AppCompatActivity {
private PagesAdapter pageadapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_viber);
TabLayout tab = (TabLayout)findViewById(R.id.tablayout);
tab.addTab(tab.newTab().setText("Contact").setIcon(R.drawable.ic_contact_phone_black_24dp));
tab.addTab(tab.newTab().setText("Add").setIcon(R.drawable.ic_person_add_black_24dp));
tab.addTab(tab.newTab().setText("Message").setIcon(R.drawable.ic_message_black_24dp));
pageadapter = new PagesAdapter(getSupportFragmentManager());
final ViewPager viewPager = (ViewPager)findViewById(R.id.viewpager);
viewPager.setAdapter(pageadapter);
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tab));
tab.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.home_menu,menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.search:
Toast.makeText(this,"Clicked",Toast.LENGTH_SHORT).show();
//startActivity(new Intent(this,Search.class));
break;
case R.id.publicacc:
//startActivity(new Intent(Viber.this,Search.class));
Toast.makeText(this,"Clicked",Toast.LENGTH_SHORT).show();
break;
}
return super.onOptionsItemSelected(item);
}
}
pages adapter.Java
public class PagesAdapter extends FragmentPagerAdapter {
int nooffrags=3;
public PagesAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position){
case 0:
ContactFragment cf = new ContactFragment();
return cf;
case 1:
return new AddContactFragment();
case 3:
return new MessageFragment();
default:
return null;
}
}
@Override
public int getCount() {
return nooffrags;
}
}
我添加了3个选项卡,当我滑动视图寻呼机时,它将加载一秒钟并崩溃并在tab中相同。当选项卡加载一秒钟并崩溃时。并且当我检查被点击的项目或者没有点击时选项选择,但当我点击startActivity(new Intent(this,Search.this));
它再次崩溃系统或应用程序任何解决方案。
在你的getItem(int Position)中的PagesAdapter.java里面添加案例2:因为当你交换到3时它获得位置值2而案例2不可用所以它将返回默认值,即null,你将得到nullPointerException
在PagesAdapter.java
:case 3:
应该是case 2:
使用此,因为案例2不可用,因此它将返回默认值
@Override
public Fragment getItem(int position) {
switch (position){
case 0:
ContactFragment cf = new ContactFragment();
return cf;
case 1:
return new AddContactFragment();
case 2:
return new MessageFragment();
default:
return null;
}
}
而不是这个
@Override
public Fragment getItem(int position) {
switch (position){
case 0:
ContactFragment cf = new ContactFragment();
return cf;
case 1:
return new AddContactFragment();
case 3:
return new MessageFragment();
default:
return null;
}
}