Android layout Android应用程序在setOnItemSelectedListener上崩溃

Android layout Android应用程序在setOnItemSelectedListener上崩溃,android-layout,crash,android-spinner,Android Layout,Crash,Android Spinner,我对自定义操作栏上的微调器有问题。。。 应用程序在启动时在指令“spnjobst.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()…”处崩溃,我不理解错误 这是Logcat: 03-28 21:07:06.594 17934-17934/com.robertot.timereport E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: com.roberto

我对自定义操作栏上的微调器有问题。。。 应用程序在启动时在指令“spnjobst.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()…”处崩溃,我不理解错误

这是Logcat:

03-28 21:07:06.594  17934-17934/com.robertot.timereport E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.robertot.timereport, PID: 17934
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.robertot.timereport/com.robertot.timereport.com.robertot.timereport.pages.MainActivity}: java.lang.NullPointerException
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2215)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2265)
            at android.app.ActivityThread.access$800(ActivityThread.java:145)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1206)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5081)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607)
            at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:132)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.NullPointerException
            at com.robertot.timereport.com.robertot.timereport.pages.SummaryFragment.onActivityCreated(SummaryFragment.java:53)
            at android.support.v4.app.Fragment.performActivityCreated(Fragment.java:1508)
            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:947)
            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
            at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
            at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1467)
            at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:570)
            at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1171)
            at android.app.Activity.performStart(Activity.java:5241)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2178)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2265)
            at android.app.ActivityThread.access$800(ActivityThread.java:145)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1206)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5081)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607)
            at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:132)
            at dalvik.system.NativeStart.main(Native Method)
这是主要的活动:

public class MainActivity extends FragmentActivity
{
    private DrawerLayout mDrawerLayout;
    private ListView mDrawerList;
    private ActionBarDrawerToggle mDrawerToggle;
    private String[] mFragmentTitles;
    private CharSequence mTitle;
    private ActionBar actionBar;
    private Spinner spnJobList;
    private int count_job = 0, FragmentTag;
    private ArrayList<String> stringListName;
    private ArrayList<Integer> stringListValue;
    private TextView titleFragment;
    private Fragment frgm;


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

        actionBar = getActionBar();
        actionBar.setCustomView(R.layout.actionbar_item);
        actionBar.setDisplayShowCustomEnabled(true);
        actionBar.setDisplayShowHomeEnabled(true);
        actionBar.setDisplayHomeAsUpEnabled(true);
        actionBar.setHomeButtonEnabled(true);
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);

        mTitle = getTitle();
        mFragmentTitles = getResources().getStringArray(R.array.fragments);
        mDrawerLayout = (DrawerLayout)findViewById(R.id.drawer);
        mDrawerList = (ListView)findViewById(R.id.drawer_list);
        spnJobList = (Spinner)findViewById(R.id.spnJobList);
        titleFragment = (TextView)findViewById(R.id.titleFragment);
        stringListName = new ArrayList<String>();
        stringListValue = new ArrayList<Integer>();

        mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);
        mDrawerList.setAdapter(new ArrayAdapter<String>(this, R.layout.drawer_list_item, mFragmentTitles));
        mDrawerList.setOnItemClickListener(new DrawerItemClickListener());

        mDrawerToggle = new ActionBarDrawerToggle(this,
                mDrawerLayout,
                R.drawable.ic_drawer,
                R.string.drawer_open,
                R.string.drawer_close){
            public void onDrawerClosed(View v)
            {
                titleFragment.setText(getTitle());
                supportInvalidateOptionsMenu();
            }
            public void onDrawerOpened(View v)
            {
                titleFragment.setText("");
                supportInvalidateOptionsMenu();
            }
        };
        mDrawerLayout.setDrawerListener(mDrawerToggle);
        if (savedInstanceState == null){
            selectItem(0);
        }
        PopulateSpinner();
    }

    @Override
    public boolean onPrepareOptionsMenu(Menu menu){
        boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
        menu.findItem(R.id.action_settings).setVisible(!drawerOpen);
        return super.onPrepareOptionsMenu(menu);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    public boolean onOptionsItemSelected(MenuItem item){
        switch(item.getItemId()){
            case android.R.id.home:
                if (mDrawerLayout.isDrawerOpen(mDrawerList)){
                    mDrawerLayout.closeDrawer(mDrawerList);
                } else {
                    mDrawerLayout.openDrawer(mDrawerList);
                }
                return true;
            case R.id.action_settings:
                startActivity(new Intent(getApplicationContext(), SettingsActivity.class));
                return true;
            case R.id.AddWorkingDay:
                startActivity(new Intent(getApplicationContext(), AddWorkingDayActivity.class));
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

    private class DrawerItemClickListener implements ListView.OnItemClickListener{
        @Override
        public void onItemClick(AdapterView<?> parent, View v, int position, long id){
            selectItem(position);
        }
    }

    private void selectItem(int position){
        frgm = new SummaryFragment();
        FragmentTag = 0;
        FragmentTransaction fm = getSupportFragmentManager().beginTransaction();
        switch(position)
        {
            case 0:
                FragmentTag = 0;
                frgm = new SummaryFragment();
                break;
            case 1:
                FragmentTag = 1;
                frgm = new NewJobFragment();
                break;
            case 2:
                FragmentTag = 2;
                frgm = new StatisticsFragment();
                break;
        }
              fm.replace(R.id.content_frame, frgm, String.valueOf(FragmentTag))
                .commit();

        mDrawerList.setItemChecked(position, true);
        setTitle(mFragmentTitles[position]);
        mDrawerLayout.closeDrawer(mDrawerList);
    }

    @Override
    public void setTitle(CharSequence title)
    {
        mTitle = title;
        actionBar.setTitle(title);
    }

    @Override
    protected void onPostCreate(Bundle savedInstanceState){
        super.onPostCreate(savedInstanceState);
        mDrawerToggle.syncState();
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig){
        super.onConfigurationChanged(newConfig);
        mDrawerToggle.onConfigurationChanged(newConfig);
    }

    private void PopulateSpinner()
    {
        DbHelperJob findjob = new DbHelperJob(this);

        try
        {
            QueryBuilder<Job, String> queryBuilder = findjob.getJobDao().queryBuilder();
            List<Job> results = queryBuilder.selectColumns("ID_JOB", "NAME_JOB").orderBy("DEFAULT_JOB", false).query();

            for (Job a : results)
            {
                stringListName.add(a.getName_job());
                stringListValue.add(a.getId());
                count_job ++;
            }

        }
        catch (SQLException e)
        {
            e.printStackTrace();
        }

        if (count_job > 0)
        {
            ArrayAdapter<String> spnAdapt = new ArrayAdapter<String> (this, android.R.layout.simple_spinner_item, stringListName);
            spnAdapt.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            spnJobList.setAdapter(spnAdapt);
            spnJobList.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
            {
                @Override
                public void onItemSelected(AdapterView<?> arg0, View arg1,int position, long id)
                {
                    switch (FragmentTag)
                    {
                        //Summary - Refresh ListView
                        case 0:
                            SummaryFragment sf = (SummaryFragment)getSupportFragmentManager().findFragmentByTag(String.valueOf(FragmentTag));
                            sf.init(String.valueOf(stringListValue.get(position)));
                            break;
                    }

                }

                @Override
                public void onNothingSelected(AdapterView<?> arg0){}
            });

            findjob.close();
        }
    }
}
public类MainActivity扩展了FragmentActivity
{
私人抽屉布局mDrawerLayout;
私有列表视图mDrawerList;
私有操作bardrawertoggle mDrawerToggle;
私有字符串[]MFFragmentTitles;
私有字符序列mTitle;
私人ActionBar ActionBar;
私人纺纱机;
私有int count_job=0,FragmentTag;
私有ArrayList stringListName;
私有ArrayList stringListValue;
私有文本视图标题片段;
私有碎片frgm;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
actionBar=getActionBar();
actionBar.setCustomView(R.layout.actionBar_项);
actionBar.setDisplayShowCustomEnabled(true);
actionBar.setDisplayShowHomeEnabled(真);
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setHomeButtonEnabled(真);
actionBar.setNavigationMode(actionBar.NAVIGATION_模式_标准);
mTitle=getTitle();
MFFragmentTitles=getResources().getStringArray(R.array.fragments);
mDrawerLayout=(抽屉布局)findViewById(R.id.drawer);
mDrawerList=(ListView)findViewById(R.id.drawer\u列表);
spnjobst=(微调器)findViewById(R.id.spnjobst);
titleFragment=(TextView)findViewById(R.id.titleFragment);
stringListName=新的ArrayList();
stringListValue=新的ArrayList();
mDrawerLayout.setDrawerShadow(R.drawable.drawer\u shadow,GravityCompat.START);
mDrawerList.setAdapter(新的ArrayAdapter(this,R.layout.drawer_list_项,MFFragmentTitles));
setOnItemClickListener(新的DrawerItemClickListener());
MDRAWERTOGLE=新操作BARDRAWERTOGLE(此,
mDrawerLayout,
R.可抽出式ic_抽屉,
R.string.drawer\u打开,
右弦抽屉(U关闭){
公共空间已关闭(视图五)
{
titleFragment.setText(getTitle());
SupportInvalidateOptions菜单();
}
已打开的公共空间(视图五)
{
titleFragment.setText(“”);
SupportInvalidateOptions菜单();
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
如果(savedInstanceState==null){
选择项目(0);
}
PopulateSpinner();
}
@凌驾
公共布尔值OnPrepareOptions菜单(菜单){
boolean-DrawerLayout=mDrawerLayout.isDrawerOpen(mDrawerList);
menu.findItem(R.id.action\u设置).setVisible(!drawerropen);
返回super.onPrepareOptions菜单(菜单);
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(R.menu.main,menu);
返回true;
}
公共布尔值onOptionsItemSelected(菜单项项){
开关(item.getItemId()){
案例android.R.id.home:
if(mDrawerLayout.isDrawerOpen(mDrawerList)){
mDrawerLayout.closeDrawer(mDrawerList);
}否则{
mDrawerLayout.openDrawer(mDrawerList);
}
返回true;
案例R.id.action\u设置:
startActivity(新意图(getApplicationContext(),setingsActivity.class));
返回true;
案例R.id.AddWorkingDay:
startActivity(新意图(getApplicationContext(),AddWorkingDayActivity.class));
返回true;
违约:
返回super.onOptionsItemSelected(项目);
}
}
私有类DrawerItemClickListener实现ListView.OnItemClickListener{
@凌驾
public void onItemClick(AdapterView父视图、视图v、整型位置、长id){
选择项目(位置);
}
}
私有void selectItem(内部位置){
frgm=新的SummaryFragment();
FragmentTag=0;
FragmentTransaction fm=getSupportFragmentManager().beginTransaction();
开关(位置)
{
案例0:
FragmentTag=0;
frgm=新的SummaryFragment();
打破
案例1:
碎片标签=1;
frgm=新的NewJobFragment();
打破
案例2:
碎片标签=2;
frgm=新统计数据片段();
打破
}
fm.replace(R.id.content_frame,frgm,String.valueOf(FragmentTag))
.commit();
mDrawerList.setItemChecked(位置,true);
setTitle(MFFragmentTitles[职位]);
mDrawerLayout.closeDrawer(mDrawerList);
}
@凌驾
公共无效设置标题(字符序列标题)
{
mTitle=标题;
actionBar.setTitle(title);
}
@凌驾
后期创建时受保护的空(捆绑包savedInstanceState){
super.onPostCreate(savedInstanceState);
mDrawerToggle.syncState();
}
@凌驾
公共无效OnConfiguration已更改(配置newConfig){
super.onConfigurationChanged(newConfig);
mDrawerToggle.onConfigurationChanged(newConfig);
}
私有void PopulateSpinner()
{
DbHelperJob findjob=新的DbHelperJob(此);
尝试
{
QueryBuilder QueryBuilder=findjob.getJobDao().QueryBuilder();
List results=queryBuilder.selectColumns(“ID\u JOB”、“NAME\u JOB”).orderBy(“DEFAULT\u JOB”,false).query();
F
<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:gravity="center_vertical">

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

    <TextView
        android:id="@+id/appName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/app_name"
        android:gravity="center_vertical"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="#000000" />

    <TextView
        android:id="@+id/titleFragment"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=""
        android:layout_below="@+id/appName"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="#000000" />
    </RelativeLayout>

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
    <Spinner
        android:id="@+id/spnJobList"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:gravity="center"/>
    </RelativeLayout>

</LinearLayout>
private ArrayList<String> stringListName;
    private ArrayList<Integer> stringListValue;
    private ActionBar actionBar;
    private TextView titleFragment;

    // onCreate
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
    }

    // onActivityCreated
    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        actionBar = getActivity().getActionBar();
        stringListName = new ArrayList<String>();
        stringListValue = new ArrayList<Integer>();
        titleFragment.setText(actionBar.getTitle());

        //PopulateSpinner();
        //init();
    }
titleFragment.setText((actionBar != null) ? actionBar.getTitle() : "ActionBar is Null");