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
:
我在myBaseActivity
中将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);
}
}