Java mDrawerList.setOnItemClickListener NPE
这是onCreate,它在mDrawerList.setOnItemClickListener上提供NPE(此) 我只想创建列表菜单与国家图标和文字,如:俄罗斯,英国,意大利。当用户单击它时,它必须更改应用程序的语言环境。 我想用抽屉激活来代替将所有不同的语言添加到OverFlowMenuJava mDrawerList.setOnItemClickListener NPE,java,android,android-listview,Java,Android,Android Listview,这是onCreate,它在mDrawerList.setOnItemClickListener上提供NPE(此) 我只想创建列表菜单与国家图标和文字,如:俄罗斯,英国,意大利。当用户单击它时,它必须更改应用程序的语言环境。 我想用抽屉激活来代替将所有不同的语言添加到OverFlowMenu @SuppressLint("NewApi") @Override protected void onCreate(Bundle savedInstanceState) {
@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(activity_main);
/**
*
*
*
*
*/
mTitle = mDrawerTitle = getTitle();
// load slide menu items
navMenuTitles = getResources().getStringArray(nav_drawer_items);
// nav drawer icons from resources
navMenuIcons = getResources()
.obtainTypedArray(nav_drawer_icons);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (ListView) findViewById(list_slidermenu);
navDrawerItems = new ArrayList<>();
// adding nav drawer items to array
// English language
navDrawerItems.add(new NavDrawerItem(navMenuTitles[0], navMenuIcons.getResourceId(0, -1)));
// Russian language
navDrawerItems.add(new NavDrawerItem(navMenuTitles[1], navMenuIcons.getResourceId(1, -1)));
// Italian language
navDrawerItems.add(new NavDrawerItem(navMenuTitles[2], navMenuIcons.getResourceId(2, -1)));
// Recycle the typed array
navMenuIcons.recycle();
mDrawerList.setOnItemClickListener(this);
// setting the nav drawer list adapter
adapter = new NavDrawerListAdapter(getApplicationContext(),
navDrawerItems);
mDrawerList.setAdapter(adapter);
// enabling action bar app icon and behaving it as toggle button
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeButtonEnabled(true);
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
R.drawable.ic_drawer, //nav menu toggle icon
R.string.app_name, // nav drawer open - description for accessibility
R.string.app_name // nav drawer close - description for accessibility
) {
public void onDrawerClosed(View view) {
getActionBar().setTitle(mTitle);
// calling onPrepareOptionsMenu() to show action bar icons
invalidateOptionsMenu();
}
public void onDrawerOpened(View drawerView) {
getActionBar().setTitle(mDrawerTitle);
// calling onPrepareOptionsMenu() to hide action bar icons
invalidateOptionsMenu();
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
/*if (savedInstanceState == null) {
// on first time display view for first nav item
displayView(0);
}*/
/**
*
*
*
*
*/
storyButtonMainBody = (Button) findViewById(storyButton);
storyButtonMainBody.setOnClickListener(this);
specSectButton = (Button) findViewById(specSectionButtonId);
specSectButton.setOnClickListener(this);
webRegistryButton = (Button) findViewById(e_registryId);
webRegistryButton.setOnClickListener(this);
feedBackButton = (Button) findViewById(feedback);
feedBackButton.setOnClickListener(this);
findUsButton = (Button) findViewById(findus);
findUsButton.setOnClickListener(this);
communicationButton = (Button) findViewById(R.id.button_show_comunications);
communicationButton.setOnClickListener(this);
makeActionOverflowMenuShown();
}
/*private class SlideMenuClickListener implements
OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// display view for selected nav drawer item
displayView(position);
}
}*/
/* *
* Called when invalidateOptionsMenu() is triggered
*/
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
// if nav drawer is opened, hide the action items
boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
menu.findItem(R.id.action_settings).setVisible(!drawerOpen);
return super.onPrepareOptionsMenu(menu);
}
/**
* Diplaying fragment view for selected nav drawer list item
*/
private void displayView(int position) {
// update the main content by replacing fragments
Fragment fragment = null;
switch (position) {
case 0:
Locale locale = new Locale("en");
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext()
.getResources()
.updateConfiguration(config, getBaseContext()
.getResources()
.getDisplayMetrics());
restartActivity();
Toast.makeText(this, R.string.locale_lang, LENGTH_LONG).show();
break;
case 1:
Locale locale2 = new Locale("ru");
Locale.setDefault(locale2);
Configuration config2 = new Configuration();
config2.locale = locale2;
getBaseContext()
.getResources()
.updateConfiguration(config2, getBaseContext()
.getResources()
.getDisplayMetrics());
restartActivity();
Toast.makeText(this, R.string.locale_lang, LENGTH_LONG).show();
break;
case 2:
Locale locale3 = new Locale("it");
Locale.setDefault(locale3);
Configuration config3 = new Configuration();
config3.locale = locale3;
getBaseContext()
.getResources()
.updateConfiguration(config3, getBaseContext()
.getResources()
.getDisplayMetrics());
restartActivity();
Toast.makeText(this, R.string.locale_lang, LENGTH_LONG).show();
break;
}
if (fragment != null) {
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.frame_container, fragment).commit();
// update selected item and title, then close the drawer
mDrawerList.setItemChecked(position, true);
mDrawerList.setSelection(position);
setTitle(navMenuTitles[position]);
mDrawerLayout.closeDrawer(mDrawerList);
} else {
// error in creating fragment
Log.e("MainActivity", "Error in creating fragment");
}
}
@SuppressLint(“NewApi”)
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(活动主视图);
/**
*
*
*
*
*/
mTitle=mDrawerTitle=getTitle();
//加载幻灯片菜单项
NavMenuTiles=getResources().getStringArray(导航抽屉项);
//参考资料中的导航抽屉图标
navMenuIcons=getResources()
.obtainTypedArray(导航抽屉图标);
mDrawerLayout=(抽屉布局)findViewById(R.id.抽屉布局);
mDrawerList=(ListView)findViewById(列表\幻灯片菜单);
navDrawerItems=新的ArrayList();
//将导航抽屉项添加到阵列
//英语
添加(新的NavDrawerItem(navMenuTitles[0],navMenuIcons.getResourceId(0,-1));
//俄语
添加(新的NavDrawerItem(navMenuTitles[1],navMenuIcons.getResourceId(1,-1));
//意大利语
添加(新的NavDrawerItem(navMenuTitles[2],navMenuIcons.getResourceId(2,-1));
//回收类型化数组
navMenuIcons.recycle();
mDrawerList.setOnItemClickListener(this);
//设置导航抽屉列表适配器
适配器=新的NavDroperListAdapter(getApplicationContext(),
纳维特姆斯);
mDrawerList.setAdapter(适配器);
//启用操作栏应用程序图标并将其作为切换按钮
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeButtonEnabled(true);
mDrawerToggle=新操作BarDrawerToggle(此,mDrawerLayout,
R.drawable.ic_抽屉,//导航菜单切换图标
R.string.app_name,//导航抽屉打开-可访问性说明
R.string.app_name//nav抽屉关闭-可访问性说明
) {
公共无效onDrawerClosed(视图){
getActionBar().setTitle(mTitle);
//调用onPrepareOptions菜单()以显示操作栏图标
无效操作菜单();
}
打开图纸上的公共空白(视图抽屉视图){
getActionBar().setTitle(mDrawerTitle);
//调用onPrepareOptions菜单()隐藏操作栏图标
无效操作菜单();
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
/*如果(savedInstanceState==null){
//第一个导航项目的首次显示视图
显示视图(0);
}*/
/**
*
*
*
*
*/
storyButtonMainBody=(按钮)findViewById(storyButton);
storyButtonMainBody.setOnClickListener(此);
SpecSectionButton=(按钮)findViewById(specSectionButtonId);
specSectButton.setOnClickListener(此);
webRegistryButton=(按钮)findViewById(e_registryId);
webRegistryButton.setOnClickListener(此);
feedBackButton=(按钮)findViewById(反馈);
feedBackButton.setOnClickListener(此);
findUsButton=(按钮)findViewById(findus);
findUsButton.setOnClickListener(这个);
通讯按钮=(按钮)findViewById(R.id.Button\u show\u comunications);
communicationButton.setOnClickListener(此);
makeActionOverflowMenuShown();
}
/*私有类SlideMenuClickListener实现
麦克利克监听器{
@凌驾
public void onItemClick(AdapterView父视图、视图、整型位置、,
长id){
//所选导航抽屉项目的显示视图
显示视图(位置);
}
}*/
/* *
*在触发InvalidateOptions菜单()时调用
*/
@凌驾
公共布尔值OnPrepareOptions菜单(菜单){
//如果导航抽屉打开,则隐藏操作项
boolean-DrawerLayout=mDrawerLayout.isDrawerOpen(mDrawerList);
menu.findItem(R.id.action\u设置).setVisible(!drawerropen);
返回super.onPrepareOptions菜单(菜单);
}
/**
*为所选导航抽屉列表项显示片段视图
*/
私有void显示视图(内部位置){
//通过替换片段更新主要内容
片段=空;
开关(位置){
案例0:
语言环境=新语言环境(“en”);
setDefault(Locale);
配置配置=新配置();
config.locale=locale;
getBaseContext()
.getResources()
.updateConfiguration(配置,getBaseContext()
.getResources()
.getDisplayMetrics());
重启活动();
Toast.makeText(this,R.string.locale_lang,LENGTH_LONG).show();
打破
案例1:
语言环境locale2=新语言环境(“ru”);
setDefault(locale2);
配置
mDrawerList = (ListView) findViewById(list_slidermenu);