Android 使用ActionBarCompat时FileNotFoundException

Android 使用ActionBarCompat时FileNotFoundException,android,android-studio,filenotfoundexception,android-actionbar-compat,Android,Android Studio,Filenotfoundexception,Android Actionbar Compat,我试图使用ActionBarCompat,但在emulator(API 7)中运行应用程序时,我得到一个FileNotFoundException: 我在myBaseActivity中将FragmentActivity更改为ActionBarActivity: package com.cs15.x360a.app; import android.content.res.*; import android.os.*; import android.support.v4.app.*; import

我试图使用
ActionBarCompat
,但在emulator(API 7)中运行应用程序时,我得到一个
FileNotFoundException

我在my
BaseActivity
中将
FragmentActivity
更改为
ActionBarActivity

package com.cs15.x360a.app;

import android.content.res.*;
import android.os.*;
import android.support.v4.app.*;
import android.support.v4.widget.*;
import android.support.v7.app.ActionBarActivity;
import android.view.*;
import android.widget.*;
import android.widget.AdapterView.*;
import com.cs15.x360a.adapter.NaviMenuAdapter;

public class BaseActivity extends ActionBarActivity
                          implements OnItemClickListener {
    // Instance variables
    private ActionBarDrawerToggle mDrawerToggle;
    private Fragment mFrag;
    private DrawerLayout mDrawerLayout;
    private ListView mNaviMenu;
    private String[] mNaviMenuTitles;

    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setHomeButtonEnabled(true);
        getSupportActionBar().setIcon(R.drawable.ic_logo);

        // Instantiate variables
        mNaviMenuTitles = getResources()
                    .getStringArray(R.array.slide_menu_navigation);
        mDrawerLayout = (DrawerLayout) findViewById(R.id.dl_main);
        mNaviMenu = (ListView) findViewById(R.id.lv_slide_navigation_content);

        // set navigation menu adapter
        mNaviMenu.setAdapter(new NaviMenuAdapter(this, mNaviMenuTitles));
        mNaviMenu.setOnItemClickListener(this);
        mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, 
                    R.drawable.ic_drawer,
            R.string.navi_open, R.string.navi_close){

                public void onDrawerClosed(View view){
                    // refresh action bar menu
                    invalidateOptionsMenu();
                }

                public void onDrawerOpened(View view){
                    // refresh action bar menu
                    invalidateOptionsMenu();
                }
            };

        // set action bar home icon
        mDrawerLayout.setDrawerListener(mDrawerToggle);

        // display default selected item (navigation drawer)
        if (savedInstanceState == null) {
            selectItem(0);
        }
    }

    public void onItemClick(AdapterView<?> parent, View view, 
                                int position, long id) {
        // select item
        selectItem(position);
    }

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

    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
        // If the nav drawer is open, hide action items 
        // related to the content view
        boolean drawerOpen = mDrawerLayout.isDrawerOpen(mNaviMenu);
        //menu.findItem(R.id.menu_arcade_list).setVisible(!drawerOpen);
        //menu.findItem(R.id.menu_retail_list).setVisible(!drawerOpen);
        //menu.findItem(R.id.menu_japanese_list).setVisible(!drawerOpen);
        //menu.findItem(R.id.menu_gfwl_list).setVisible(!drawerOpen);
        //menu.findItem(R.id.menu_windows8_list).setVisible(!drawerOpen);
        //menu.findItem(R.id.menu_mobile_list).setVisible(!drawerOpen);
        return super.onPrepareOptionsMenu(menu);
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        // Pass any configuration change to the drawer toggles
        mDrawerToggle.onConfigurationChanged(newConfig);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // action bar listener
        if (mDrawerToggle.onOptionsItemSelected(item)){
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

    private void selectItem(int position) {
        // Navigation menu item click
        switch (position) {
            case 0:
                // Start LatestAchievements Fragment
                mFrag = new LatestAch();
                break;

            case 1:
                // Start LatestNews Fragment
                mFrag = new LatestNews();
                break;
        }

        // Fragment transaction
        FragmentTransaction mFragTrans = 
            this.getSupportFragmentManager().beginTransaction();
        mFragTrans.replace(R.id.fl_main_content, mFrag).commit();

        // update selected item
        mNaviMenu.setItemChecked(position, true);

        // set action bar title
        getSupportActionBar().setTitle(mNaviMenuTitles[position]);

        // close navigation menu
        mDrawerLayout.closeDrawer(mNaviMenu);
    }
}   
package com.cs15.x360a.app;
导入android.content.res.*;
导入android.os.*;
导入android.support.v4.app.*;
导入android.support.v4.widget.*;
导入android.support.v7.app.ActionBarActivity;
导入android.view.*;
导入android.widget.*;
导入android.widget.AdapterView.*;
导入com.cs15.x360a.adapter.NaviMenuAdapter;
公共类BaseActivity扩展了ActionBarActivity
实现MClickListener{
//实例变量
私有操作bardrawertoggle mDrawerToggle;
私有碎片mFrag;
私人抽屉布局mDrawerLayout;
私有列表视图菜单;
私有字符串[]mnavimenutiles;
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setIcon(R.drawable.ic_徽标);
//实例化变量
mnavimenutiles=getResources()
.getStringArray(R.array.slide\u菜单\u导航);
mDrawerLayout=(抽屉布局)findViewById(R.id.dl_main);
MNAVIMOUN=(ListView)findViewById(R.id.lv\u幻灯片\u导航\u内容);
//设置导航菜单适配器
setAdapter(新的NaviMenuAdapter(这个,mnavimenutilites));
mNaviMenu.setOnItemClickListener(this);
mDrawerToggle=新操作BarDrawerToggle(此,mDrawerLayout,
R.可抽出式ic_抽屉,
R.string.navi_打开,R.string.navi_关闭){
公共无效onDrawerClosed(视图){
//刷新操作栏菜单
无效操作菜单();
}
已打开的公共空间(视图){
//刷新操作栏菜单
无效操作菜单();
}
};
//设置操作栏主图标
mDrawerLayout.setDrawerListener(mDrawerToggle);
//显示默认选定项目(导航抽屉)
如果(savedInstanceState==null){
选择项目(0);
}
}
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
//选择项
选择项目(位置);
}
@凌驾
后期创建时受保护的空(捆绑包savedInstanceState){
super.onPostCreate(savedInstanceState);
mDrawerToggle.syncState();
}
@凌驾
公共布尔值OnPrepareOptions菜单(菜单){
//如果导航抽屉打开,则隐藏操作项目
//与内容视图相关
布尔DrawerLayout=mDrawerLayout.isDrawerOpen(mNaviMenu);
//menu.findItem(R.id.menu\u arcade\u list).setVisible(!drawerropen);
//menu.findItem(R.id.menu\u retail\u list).setVisible(!drawerropen);
//menu.findItem(R.id.menu\u japanese\u list).setVisible(!drawerropen);
//menu.findItem(R.id.menu\u gfwl\u list).setVisible(!drawerropen);
//menu.findItem(R.id.menu\u windows8\u list).setVisible(!drawerropen);
//menu.findItem(R.id.menu\u mobile\u list).setVisible(!drawerropen);
返回super.onPrepareOptions菜单(菜单);
}
@凌驾
公共无效OnConfiguration已更改(配置newConfig){
super.onConfigurationChanged(newConfig);
//将任何配置更改传递给抽屉开关
mDrawerToggle.onConfigurationChanged(newConfig);
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
//动作条侦听器
如果(MDRAWERTOGLE.onOptionsItemSelected(项目)){
返回true;
}
返回super.onOptionsItemSelected(项目);
}
私有void selectItem(内部位置){
//导航菜单项单击
开关(位置){
案例0:
//启动LatestHievents片段
mFrag=新的LatestAch();
打破
案例1:
//开始最新的新闻片段
mFrag=最新消息();
打破
}
//片段事务
FragmentTransaction mFragTrans=
此.getSupportFragmentManager().beginTransaction();
mFragTrans.replace(R.id.fl_main_content,mFrag.commit();
//更新所选项目
mNaviMenu.setItemChecked(位置,真);
//设置操作栏标题
getSupportActionBar().setTitle(mnavimenUtilites[position]);
//关闭导航菜单
mDrawerLayout.closeDrawer(mNaviMenu);
}
}   

有人能帮我解决这个小问题吗?

log抱怨res/drawable hdpi Folder中缺少resources R.drawable.ic_徽标,但res/已完成。当我在API 14+中运行应用程序时,一切正常。通常情况下,如果导入了android.R类而不是应用程序com.mydomain.myapp.R,就会出现这种情况。什么是导入android.content.res.*;对于我在你的代码中找不到我的OnConfiguration更改的任何用途。我改为导入android.content.res.Configuration;还是同样的问题。
buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}
apply plugin: 'android'

dependencies {
    compile files('libs/volley.jar')
    compile files('libs/jsoup-1.7.2.jar')
    compile 'com.android.support:support-v4:18.0.+'
    compile 'com.android.support:appcompat-v7:18.0.+'
}

android {
    compileSdkVersion 18
    buildToolsVersion "18.0.0"

    defaultConfig {
        minSdkVersion 7
        targetSdkVersion 16
    }
}
package com.cs15.x360a.app;

import android.content.res.*;
import android.os.*;
import android.support.v4.app.*;
import android.support.v4.widget.*;
import android.support.v7.app.ActionBarActivity;
import android.view.*;
import android.widget.*;
import android.widget.AdapterView.*;
import com.cs15.x360a.adapter.NaviMenuAdapter;

public class BaseActivity extends ActionBarActivity
                          implements OnItemClickListener {
    // Instance variables
    private ActionBarDrawerToggle mDrawerToggle;
    private Fragment mFrag;
    private DrawerLayout mDrawerLayout;
    private ListView mNaviMenu;
    private String[] mNaviMenuTitles;

    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setHomeButtonEnabled(true);
        getSupportActionBar().setIcon(R.drawable.ic_logo);

        // Instantiate variables
        mNaviMenuTitles = getResources()
                    .getStringArray(R.array.slide_menu_navigation);
        mDrawerLayout = (DrawerLayout) findViewById(R.id.dl_main);
        mNaviMenu = (ListView) findViewById(R.id.lv_slide_navigation_content);

        // set navigation menu adapter
        mNaviMenu.setAdapter(new NaviMenuAdapter(this, mNaviMenuTitles));
        mNaviMenu.setOnItemClickListener(this);
        mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, 
                    R.drawable.ic_drawer,
            R.string.navi_open, R.string.navi_close){

                public void onDrawerClosed(View view){
                    // refresh action bar menu
                    invalidateOptionsMenu();
                }

                public void onDrawerOpened(View view){
                    // refresh action bar menu
                    invalidateOptionsMenu();
                }
            };

        // set action bar home icon
        mDrawerLayout.setDrawerListener(mDrawerToggle);

        // display default selected item (navigation drawer)
        if (savedInstanceState == null) {
            selectItem(0);
        }
    }

    public void onItemClick(AdapterView<?> parent, View view, 
                                int position, long id) {
        // select item
        selectItem(position);
    }

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

    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
        // If the nav drawer is open, hide action items 
        // related to the content view
        boolean drawerOpen = mDrawerLayout.isDrawerOpen(mNaviMenu);
        //menu.findItem(R.id.menu_arcade_list).setVisible(!drawerOpen);
        //menu.findItem(R.id.menu_retail_list).setVisible(!drawerOpen);
        //menu.findItem(R.id.menu_japanese_list).setVisible(!drawerOpen);
        //menu.findItem(R.id.menu_gfwl_list).setVisible(!drawerOpen);
        //menu.findItem(R.id.menu_windows8_list).setVisible(!drawerOpen);
        //menu.findItem(R.id.menu_mobile_list).setVisible(!drawerOpen);
        return super.onPrepareOptionsMenu(menu);
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        // Pass any configuration change to the drawer toggles
        mDrawerToggle.onConfigurationChanged(newConfig);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // action bar listener
        if (mDrawerToggle.onOptionsItemSelected(item)){
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

    private void selectItem(int position) {
        // Navigation menu item click
        switch (position) {
            case 0:
                // Start LatestAchievements Fragment
                mFrag = new LatestAch();
                break;

            case 1:
                // Start LatestNews Fragment
                mFrag = new LatestNews();
                break;
        }

        // Fragment transaction
        FragmentTransaction mFragTrans = 
            this.getSupportFragmentManager().beginTransaction();
        mFragTrans.replace(R.id.fl_main_content, mFrag).commit();

        // update selected item
        mNaviMenu.setItemChecked(position, true);

        // set action bar title
        getSupportActionBar().setTitle(mNaviMenuTitles[position]);

        // close navigation menu
        mDrawerLayout.closeDrawer(mNaviMenu);
    }
}