屏幕版本

时间:2015-08-09 16:04:43

标签: android android-tabs android-sliding

我正在使用我从网站material design sliding tabs借来的Android Sliding标签应用程序。我已经成功实现了代码,但是从一个选项卡滑动到另一个选项卡时出现错误。基本上发生的情况是,当我滑动到第二个选项卡时,选项卡按预期切换但是一旦我释放屏幕,应用程序就会关闭。我检查了logcat,这是显示的错误:

31431-31431/com.skibzy.skibzydesigns E/MessageQueue-JNI? java.lang.NullPointerException
        at com.skibzy.skibzydesigns.SlidingTabLayout$InternalViewPagerListener.onPageSelected(SlidingTabLayout.java:264)
        at android.support.v4.view.ViewPager.dispatchOnPageSelected(ViewPager.java:1786)
        at android.support.v4.view.ViewPager.scrollToItem(ViewPager.java:568)
        at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:552)
        at android.support.v4.view.ViewPager.onTouchEvent(ViewPager.java:2101)
        at android.view.View.dispatchTouchEvent(View.java:7315)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2253)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1950)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2259)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1964)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2259)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1964)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2259)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1964)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2259)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1964)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2259)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1964)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2259)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1964)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2259)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1964)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2259)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1964)
        at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1971)
        at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1421)
        at android.app.Activity.dispatchTouchEvent(Activity.java:2428)
        at android.support.v7.internal.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:59)
        at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1919)
        at android.view.View.dispatchPointerEvent(View.java:7506)
        at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:3654)
        at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:3579)
        at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:4849)
        at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:4809)
        at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:4965)
        at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:179)
        at android.os.MessageQueue.nativePollOnce(Native Method)
        at android.os.MessageQueue.next(MessageQueue.java:128)
        at android.os.Looper.loop(Looper.java:151)
        at android.app.ActivityThread.main(ActivityThread.java:5370)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:525)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
        at dalvik.system.NativeStart.main(Native Method)

我的代码如下: activity.java

package com.skibzy.skibzydesigns;

import android.app.AlertDialog;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageButton;
import android.widget.Toast;


public class MessageActivity extends ActionBarActivity {
private Toolbar toolbar;
ViewPager pager;
ViewPagerAdapter adapter;
SlidingTabLayout tabs;
CharSequence Titles[]={"Inbox","Draft"};
int Numboftabs =2;
final Context context = this;
private ImageButton btnCall;
private ImageButton btnMessage;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_message);

    toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    // Creating The ViewPagerAdapter and Passing Fragment Manager, Titles fot the Tabs and Number Of Tabs.
    adapter = new ViewPagerAdapter(getSupportFragmentManager(),Titles,Numboftabs);
    // Assigning ViewPager View and setting the adapter
    pager = (ViewPager) findViewById(R.id.pager);
    pager.setAdapter(adapter);
    // Assiging the Sliding Tab Layout View
    tabs = (SlidingTabLayout) findViewById(R.id.tabs);
    tabs.setDistributeEvenly(true); // To make the Tabs Fixed set this true, This makes the tabs Space Evenly in Available width
    // Setting Custom Color for the Scroll bar indicator of the Tab View
    tabs.setCustomTabColorizer(new SlidingTabLayout.TabColorizer() {
        @Override
        public int getIndicatorColor(int position) {
            return getResources().getColor(R.color.tabsScrollColor);
        }
    });
    // Setting the ViewPager For the SlidingTabsLayout
    tabs.setViewPager(pager);
}

layout.xml

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.skibzy.skibzydesigns.MessageActivity">

<include
    android:id="@+id/toolbar"
    layout="@layout/toolbar" />

<RelativeLayout
    android:id="@+id/body"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_above="@+id/appFooter"
    android:layout_below="@+id/toolbar">

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <com.skibzy.skibzydesigns.SlidingTabLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/tabs"
            android:elevation="2dp"
            android:background="@color/ColorPrimary"/>
        <android.support.v4.view.ViewPager
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:id="@+id/pager"
            style="@style/appBody"/>
        </LinearLayout>

</RelativeLayout>

<View
    android:layout_width="fill_parent"
    android:layout_height="1dp"
    android:background="@color/divider"
    android:layout_above="@+id/appFooter"/>
<RelativeLayout
    android:id="@+id/appFooter"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:padding="10dp">

    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/callButton"
        android:background="#ffeeeeee"
        android:src="@drawable/phone"
        android:layout_alignParentLeft="true"
        style="@style/footerImageButton"/>

    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/msgButton"
        android:src="@drawable/sms"
        android:background="#ffeeeeee"
        android:layout_centerHorizontal="true"/>

    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/mapButton"
        android:src="@drawable/maps"
        android:background="#ffeeeeee"
        android:layout_alignParentRight="true"/>

</RelativeLayout>

</RelativeLayout>

ViewPagerAdapter.java

package com.skibzy.skibzydesigns;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;

public class ViewPagerAdapter extends FragmentStatePagerAdapter {

CharSequence Titles[];
int NumbOfTabs;
public ViewPagerAdapter(FragmentManager fm,CharSequence mTitles[], int mNumbOfTabsumb) {
    super(fm);
    this.Titles = mTitles;
    this.NumbOfTabs = mNumbOfTabsumb;
}
//This method return the fragment for the every position in the View Pager
@Override
public Fragment getItem(int position) {
    if(position == 0) // if the position is 0 we are returning the First tab
    {
        inboxTab tab1 = new inboxTab();
        return tab1;
    }
    else // As we are having 2 tabs if the position is now 0 it must be 1 so we are returning second tab
    {
        draftTab tab2 = new draftTab();
        return tab2;
    }
}
// This method return the titles for the Tabs in the Tab Strip
@Override
public CharSequence getPageTitle(int position) {
    return Titles[position];
}
// This method return the Number of tabs for the tabs Strip
@Override
public int getCount() {
    return NumbOfTabs;
}
}

我真的很感谢你的帮助。

0 个答案:

没有答案