Java 生成测试滑动菜单时出错

Java 生成测试滑动菜单时出错,java,android,eclipse,navigation-drawer,slidingmenu,Java,Android,Eclipse,Navigation Drawer,Slidingmenu,您好,我遵循了一个教程,我试图在android中测试滑动菜单(导航抽屉),但我在logcat中不断遇到这些错误。请帮助我或给我一些想法,以便我能够继续解决问题。帮助 2-12 18:37:43.976: E/Trace(698): error opening trace file: No such file or directory (2) 02-12 18:37:44.666: I/System.out(698): activity started----------- 02-12 18:37

您好,我遵循了一个教程,我试图在android中测试滑动菜单(导航抽屉),但我在logcat中不断遇到这些错误。请帮助我或给我一些想法,以便我能够继续解决问题。帮助

2-12 18:37:43.976: E/Trace(698): error opening trace file: No such file or directory (2)
02-12 18:37:44.666: I/System.out(698): activity started-----------
02-12 18:37:44.666: I/System.out(698): 3
02-12 18:37:44.676: D/AndroidRuntime(698): Shutting down VM
02-12 18:37:44.676: W/dalvikvm(698): threadid=1: thread exiting with uncaught exception (group=0x40a13300)
02-12 18:37:44.696: E/AndroidRuntime(698): FATAL EXCEPTION: main
02-12 18:37:44.696: E/AndroidRuntime(698): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.navigationdrawertest/com.example.navigationdrawertest.HomeActivity}: java.lang.NullPointerException
02-12 18:37:44.696: E/AndroidRuntime(698):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
02-12 18:37:44.696: E/AndroidRuntime(698):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
02-12 18:37:44.696: E/AndroidRuntime(698):  at android.app.ActivityThread.access$600(ActivityThread.java:130)
02-12 18:37:44.696: E/AndroidRuntime(698):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
02-12 18:37:44.696: E/AndroidRuntime(698):  at android.os.Handler.dispatchMessage(Handler.java:99)
02-12 18:37:44.696: E/AndroidRuntime(698):  at android.os.Looper.loop(Looper.java:137)
02-12 18:37:44.696: E/AndroidRuntime(698):  at android.app.ActivityThread.main(ActivityThread.java:4745)
02-12 18:37:44.696: E/AndroidRuntime(698):  at java.lang.reflect.Method.invokeNative(Native Method)
02-12 18:37:44.696: E/AndroidRuntime(698):  at java.lang.reflect.Method.invoke(Method.java:511)
02-12 18:37:44.696: E/AndroidRuntime(698):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
02-12 18:37:44.696: E/AndroidRuntime(698):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
02-12 18:37:44.696: E/AndroidRuntime(698):  at dalvik.system.NativeStart.main(Native Method)
02-12 18:37:44.696: E/AndroidRuntime(698): Caused by: java.lang.NullPointerException
02-12 18:37:44.696: E/AndroidRuntime(698):  at com.example.navigationdrawertest.HomeActivity.onCreate(HomeActivity.java:40)
02-12 18:37:44.696: E/AndroidRuntime(698):  at android.app.Activity.performCreate(Activity.java:5008)
02-12 18:37:44.696: E/AndroidRuntime(698):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
02-12 18:37:44.696: E/AndroidRuntime(698):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
02-12 18:37:44.696: E/AndroidRuntime(698):  ... 11 more
02-12 18:37:48.396: I/Process(698): Sending signal. PID: 698 SIG: 9
还有我的HomeActivity.java文件

package com.example.navigationdrawertest;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentManager;
import android.content.res.Configuration;
import android.os.Bundle;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.widget.DrawerLayout;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import com.example.navigationdrawertest.operatingsystemfragment.*;

public class HomeActivity extends Activity {
     private String[] mPlanetTitles;
     private DrawerLayout mDrawerLayout;
     private ListView mDrawerList;
     private ActionBarDrawerToggle mDrawerToggle;
     private CharSequence title;

    @SuppressLint("NewApi")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);
         System.out.println("activity started-----------");
        title = getActionBar().getTitle();
        mPlanetTitles = getResources().getStringArray(R.array.operating_systems);
        System.out.println(mPlanetTitles.length);
        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
        mDrawerList = (ListView) findViewById(R.id.left_drawer);

     // Set the adapter for the list view
       mDrawerList.setAdapter(new ArrayAdapter<String>(this,
                R.layout.nav_drawer,R.id.content_frame, mPlanetTitles));
        System.out.println("adapater set to list");
        // Set the list's click listener
        mDrawerList.setOnItemClickListener(new DrawerItemClickListener());

        mDrawerToggle = new ActionBarDrawerToggle(this,                  /* host Activity */
                mDrawerLayout,         /* DrawerLayout object */
                R.drawable.ic_drawer,  /* nav drawer icon to replace 'Up' caret */
                R.string.drawer_open,  /* "open drawer" description */
                R.string.drawer_close  /* "close drawer" description */) {


/** Called when a drawer has settled in a completely closed state. */

            public void onDrawerClosed(View view) {
                getActionBar().setTitle(title);
            }


/** Called when a drawer has settled in a completely open state. */

            public void onDrawerOpened(View drawerView) {
                getActionBar().setTitle("Open Drawer");
            }
        };

       // Set the drawer toggle as the DrawerListener and then Drawer layout will listen on Drawertoggle
        mDrawerLayout.setDrawerListener(mDrawerToggle);

        getActionBar().setDisplayHomeAsUpEnabled(true);
        getActionBar().setHomeButtonEnabled(true);

        System.out.println("on create method completed");

    }

    private class DrawerItemClickListener implements ListView.OnItemClickListener {
            @Override
            public void onItemClick(AdapterView parent, View view, int position, long id) {
                System.out.println("DrawerItemClickListener");
                selectItem(position);
            }

    }

    @Override
    protected void onPostCreate(Bundle savedInstanceState) {
        super.onPostCreate(savedInstanceState);
        // Sync the toggle state after onRestoreInstanceState has occurred.
        mDrawerToggle.syncState();
    }

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

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
      getMenuInflater().inflate(R.menu.home, menu);
      return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Pass the event to ActionBarDrawerToggle, if it returns
        // true, then it has handled the app icon touch event
        if (mDrawerToggle.onOptionsItemSelected(item)) {
          return true;
        }
        // Handle your other action bar items...
        switch (item.getItemId()) {
    case R.id.action_settings:
      Toast.makeText(this, "Settings selected", Toast.LENGTH_LONG).show();
      break;

    default:
      break;
    }
        return super.onOptionsItemSelected(item);
    }


    /** Swaps fragments in the main content view */

    private void selectItem(int position) {
        System.out.println("selectItem called");
        // create a new fragment and specify the planet to show based on position
        Fragment fragment = new OperatingSystemFragment();
        Bundle args = new Bundle();
        args.putInt(OperatingSystemFragment.ARG_OS, position);
        fragment.setArguments(args);

        // Insert the fragment by replacing any existing fragment
        FragmentManager fragmentManager = getFragmentManager();
        fragmentManager.beginTransaction()
                       .replace(R.id.content_frame, fragment)
                       .commit();

        // Highlight the selected item, update the title, and close the drawer
        mDrawerList.setItemChecked(position, true);
        getActionBar().setTitle((mPlanetTitles[position]));
        mDrawerLayout.closeDrawer(mDrawerList);
    }    
}
package com.example.navigationdrawertest;
导入android.annotation.SuppressLint;
导入android.app.Activity;
导入android.app.Fragment;
导入android.app.FragmentManager;
导入android.content.res.Configuration;
导入android.os.Bundle;
导入android.support.v4.app.ActionBarDrawerToggle;
导入android.support.v4.widget.DrawerLayout;
导入android.view.Menu;
导入android.view.MenuItem;
导入android.view.view;
导入android.widget.AdapterView;
导入android.widget.ArrayAdapter;
导入android.widget.ListView;
导入android.widget.Toast;
导入com.example.NavigationDroperTest.operatingsystemfragment.*;
公共类HomeActivity扩展了活动{
私有字符串[]mplanettiles;
私人抽屉布局mDrawerLayout;
私有列表视图mDrawerList;
私有操作bardrawertoggle mDrawerToggle;
私人所有权;
@SuppressLint(“新API”)
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
System.out.println(“活动已启动----------------”);
title=getActionBar().getTitle();
mPlanetTitles=getResources().getStringArray(R.array.operating_systems);
System.out.println(mPlanetTitles.length);
mDrawerLayout=(抽屉布局)findViewById(R.id.抽屉布局);
mDrawerList=(ListView)findViewById(R.id.left\u抽屉);
//设置列表视图的适配器
mDrawerList.setAdapter(新阵列适配器,
R.布局、导航抽屉、R.id.内容(框架、mPlanetTitles));
System.out.println(“适配器设置为列表”);
//设置列表的单击侦听器
setOnItemClickListener(新的DrawerItemClickListener());
mDrawerToggle=newactionbardrawertoggle(此,/*主机活动*/
mDrawerLayout,/*抽屉布局对象*/
R.drawable.ic_抽屉,/*导航抽屉图标替换“Up”插入符号*/
R.string.drawer\u open,/*“open drawer”说明*/
R.string.drawer\u close/*“close drawer”说明*/){
/**当抽屉处于完全关闭状态时调用*/
公共无效onDrawerClosed(视图){
getActionBar().setTitle(标题);
}
/**当抽屉处于完全打开状态时调用*/
打开图纸上的公共空白(视图抽屉视图){
getActionBar().setTitle(“打开抽屉”);
}
};
//将抽屉切换设置为抽屉侦听器,然后抽屉布局将侦听抽屉切换
mDrawerLayout.setDrawerListener(mDrawerToggle);
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeButtonEnabled(true);
System.out.println(“创建方法完成时”);
}
私有类DrawerItemClickListener实现ListView.OnItemClickListener{
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
System.out.println(“draweritemclicklinklistener”);
选择项目(位置);
}
}
@凌驾
后期创建时受保护的空(捆绑包savedInstanceState){
super.onPostCreate(savedInstanceState);
//在onRestoreInstanceState发生后同步切换状态。
mDrawerToggle.syncState();
}
@凌驾
公共无效OnConfiguration已更改(配置newConfig){
super.onConfigurationChanged(newConfig);
mDrawerToggle.onConfigurationChanged(newConfig);
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
getMenuInflater().充气(R.menu.home,menu);
返回super.onCreateOptions菜单(菜单);
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
//如果返回,则将事件传递给ActionBarDrawerToggle
//则它已处理应用程序图标触摸事件
如果(MDRAWERTOGLE.onOptionsItemSelected(项目)){
返回true;
}
//处理其他操作栏项。。。
开关(item.getItemId()){
案例R.id.action\u设置:
Toast.makeText(此“设置已选定”,Toast.LENGTH_LONG).show();
打破
违约:
打破
}
返回super.onOptionsItemSelected(项目);
}
/**在主内容视图中交换片段*/
私有void selectItem(内部位置){
System.out.println(“selectItem调用”);
//创建一个新片段并根据位置指定要显示的行星
Fragment Fragment=新操作系统Fragment();
Bundle args=新Bundle();
args.putInt(OperatingSystemFragment.ARG_操作系统,位置);
fragment.setArguments(args);
//通过替换任何现有片段来插入片段
FragmentManager FragmentManager=getFragmentManager();
fragmentManager.beginTransaction()
.替换(R.id.content\u框架、片段)
.commit();
//突出显示所选项目,更新标题,然后关闭抽屉
mDrawerList.setItemChecked(位置,true);
getActionBar().setTitle((mPlanetTitles[position]);
mDrawerLayout.closeDrawer(mDrawerList);
}    
}
我必须使用API 8中的导航抽屉,所以使用支持包。请帮帮我

2-12 18:37:43.976: E/Trace(698): error opening trace file: No such file or directory (2) 
您面临的错误在这行代码中

       mDrawerList.setAdapter(new ArrayAdapter<String>(this,
            R.layout.nav_drawer,R.id.content_frame, mPlanetTitles));
mDrawerList.setAdapter(新阵列适配器,
R.布局、导航抽屉、R.id.内容(框架、mPlanetTitles));
mPlanetTitles