从一个活动移动到另一个活动(tabhost)时出错

时间:2015-10-27 14:23:35

标签: android

E/AndroidRuntime(15041): FATAL EXCEPTION: main
E/AndroidRuntime(15041): Process: ks.developers.festoforcollege, PID: 15041
E/AndroidRuntime(15041): java.lang.RuntimeException: Unable to start activiComponentInfo{ks.developers.festoforcollege/ks.developers.festoforcollege.Register}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v4.view.ViewPager.setAdapter(android.support.v4.view.PagerAdapter)' on a null object reference
E/AndroidRuntime(15041):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2379)
E/AndroidRuntime(15041):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2442)
E/AndroidRuntime(15041):    at android.app.ActivityThread.access$800(ActivityThread.java:156)
E/AndroidRuntime(15041):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1351)
E/AndroidRuntime(15041):    at android.os.Handler.dispatchMessage(Handler.java:102)
E/AndroidRuntime(15041):    at android.os.Looper.loop(Looper.java:211)
E/AndroidRuntime(15041):    at android.app.ActivityThread.main(ActivityThread.java:5371)
E/AndroidRuntime(15041):    at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime(15041):    at java.lang.reflect.Method.invoke(Method.java:372)
E/AndroidRuntime(15041):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:945)
E/AndroidRuntime(15041):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:740)
E/AndroidRuntime(15041): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v4.view.ViewPager.setAdapter(android.support.v4.view.PagerAdapter)' on a null object reference
E/AndroidRuntime(15041):    at ks.developers.festoforcollege.Register.onCreate(Register.java:33)
E/AndroidRuntime(15041):    at android.app.Activity.performCreate(Activity.java:5990)
E/AndroidRuntime(15041):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
E/AndroidRuntime(15041):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2332)
E/AndroidRuntime(15041):    ... 10 more

当我们从一个活动转移到托管一个托管主机的另一个活动时,为什么会出现此错误

单击我使用的按钮时

        Intent j = new Intent(Login.this,Register.class);
        startActivity(j);

和托管标签页的活动代码是     import android.app.ActionBar;     import android.app.ActionBar.Tab;     import android.os.Bundle;     import android.app.FragmentTransaction;     import android.support.v4.app.FragmentActivity;     import android.support.v4.view.ViewPager;     import ks.developers.festoforcollege.R;     import ks.developers.festoforcollege.tabswipe.adapter.TabsPagerAdapter;

public class Register extends FragmentActivity implements ActionBar.TabListener{ 


private ViewPager viewPager;
private TabsPagerAdapter mAdapter;
private ActionBar actionBar;
// Tab titles
private String[] tabs = { "College Details", "Fest Details", "Contact","User Id" };


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

    // Initilization
    viewPager = (ViewPager) findViewById(R.id.pager);
    actionBar = getActionBar();
    mAdapter = new TabsPagerAdapter(getSupportFragmentManager());

    viewPager.setAdapter(mAdapter);
    actionBar.setHomeButtonEnabled(false);
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);        

    // Adding Tabs
    for (String tab_name : tabs) {
        actionBar.addTab(actionBar.newTab().setText(tab_name)
                .setTabListener(this));
    }

    /**
     * on swiping the viewpager make respective tab selected
     * */
    viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {

        @Override
        public void onPageSelected(int position) {
            // on changing the page
            // make respected tab selected
            actionBar.setSelectedNavigationItem(position);
        }

        @Override
        public void onPageScrolled(int arg0, float arg1, int arg2) {
        }

        @Override
        public void onPageScrollStateChanged(int arg0) {
        }
    });
    }





@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
    // TODO Auto-generated method stub
    viewPager.setCurrentItem(tab.getPosition());
}

@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
    // TODO Auto-generated method stub

}

@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
    // TODO Auto-generated method stub
}
   }

意图有问题吗?我的意思是有任何其他方法可以从activity到fragmentActivity。

1 个答案:

答案 0 :(得分:0)

只需阅读堆栈跟踪即可。它清楚地表明你试图在null对象上做.setAdapter(),对象是你的ViewPager对象。

这意味着以下代码不起作用:

viewPager = (ViewPager) findViewById(R.id.pager);

'activity_main.xml'中没有一个元素具有id'pager'。