我已经添加菜单项编程现在怎么上执行动作 [英] i have added menu item programatically now how to perform action on it
问题描述
我添加菜单项编程现在即时通讯上它。但是它显示空指针异常进行操作。
下面是code
prepareOptionsMenu(com.actionbar.view.Menu菜单)公共布尔{
// TODO自动生成方法存根
super.on prepareOptionsMenu(菜单);
如果(标志){
menu.add(0,9,0,).setIcon(android.R.drawable.ic_menu_search).setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
menu.add(0,1,0,印地文)setShowAsAction(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW)。
menu.add(0,2,0,英语)setShowAsAction(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW)。
menu.add(0,3,0,古吉拉特)setShowAsAction(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW)。
menu.add(0,4,0,旁遮普)setShowAsAction(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW)。
menu.add(0,5,0,孟加拉语)setShowAsAction(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW)。
menu.add(0,6,0,马拉)setShowAsAction(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW)。
menu.add(0,7,0,Talugu)setShowAsAction(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW)。
menu.add(0,8,0,泰米尔语)setShowAsAction(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW)。
标志= FALSE; SearchManager的SearchManager的=(SearchManager的)getSystemService(Context.SEARCH_SERVICE);
mSearchView =(搜索查看)menu.findItem(9).getActionView();
mSearchView.setQueryHint(getResources()的getString(R.string.search_hint));
mSearchView.setIconifiedByDefault(假);
mSearchView.setSubmitButtonEnabled(假);
((搜索查看)searchItem.getActionView())setIconified(真)。
mSearchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
mSearchView.setFocusable(假);
mSearchView.setQuery(,FALSE); //
mSearchView.setIconified(真); //
mSearchView.clearFocus(); //
searchItem.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW); mSearchView.setOnQueryTextListener(本);
mSearchView.clearFocus(); } 返回true;}
这是它在mSearchView给空。
mSearchView =(搜索查看)menu.findItem(9).getActionView();
这是我的onOptionItemSelected
@覆盖
公共布尔onOptionsItemSelected(com.actionbar.view.MenuItem项){ 开关(item.getItemId()){ 案例android.R.id.home:{
如果(mDrawerLayout.isDrawerOpen(mDrawerList)){
mDrawerLayout.closeDrawer(mDrawerList);
}其他{
mDrawerLayout.openDrawer(mDrawerList);
}
打破;
} 情况下0:
返回true;
情况1:
如果(Locale.getDefault()。的toString()。equalsIgnoreCase(HI))
{ //Toast.makeText(getApplicationContext(),getResources().getString(R.string.hin_sel),Toast.LENGTH_LONG).show(); }其他
{
字符串languageToLoad =HI; // 语言
区域设置区域=新区域(languageToLoad);
Locale.setDefault(区域);
配置配置=新配置();
config.locale =区域;
getBaseContext().getResources().updateConfiguration(config,getBaseContext().getResources().getDisplayMetrics());
在意向=新意图(getBaseContext(),MainActivity.class);
startActivity(在);
完(); }
返回true; 案例2:
如果(Locale.getDefault().toString().equalsIgnoreCase(\"en\")||Locale.getDefault().toString().equals(\"en_IN\")||Locale.getDefault().toString().equals(\"en_US\"))
{
//Toast.makeText(getApplicationContext(),getResources().getString(R.string.Al_Eng_sel),Toast.LENGTH_LONG).show(); }其他{ 字符串languageToLoad =EN; // 语言
区域设置区域=新区域(languageToLoad);
Locale.setDefault(区域);
配置配置=新配置();
config.locale =区域;
getBaseContext().getResources().updateConfiguration(config,getBaseContext().getResources().getDisplayMetrics());
在意向=新意图(getBaseContext(),MainActivity.class);
startActivity(在);
完();
} 返回true; 默认:
的System.out.println(item.getItemId()); }
// QuickContactFragment对话框=新QuickContactFragment();
// dialog.show(getSupportFragmentManager(),QuickContactFragment);
//返回true; 返回super.onOptionsItemSelected(项目);
}
要每个动态添加的项目 setOnMenuItemClickListener
这样的:
prepareOptionsMenu(菜单菜单)上公共布尔{
// TODO自动生成方法存根
super.on prepareOptionsMenu(菜单);
如果(标志){
menu.add(0,9,0,).setIcon(android.R.drawable.ic_menu_search).setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW).setOnMenuItemClickListener(本);
menu.add(0,1,0, \"Hindi\").setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW).setOnMenuItemClickListener(this);
menu.add(0,2,0, \"English\").setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW).setOnMenuItemClickListener(this);
menu.add(0,3,0, \"Gujarati\").setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW).setOnMenuItemClickListener(this);
menu.add(0,4,0, \"Punjabi\").setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW).setOnMenuItemClickListener(this);
menu.add(0,5,0, \"Bengali\").setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW).setOnMenuItemClickListener(this);
menu.add(0,6,0, \"Marathi\").setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW).setOnMenuItemClickListener(this);
menu.add(0,7,0, \"Talugu\").setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW).setOnMenuItemClickListener(this);
menu.add(0,8,0, \"Tamil\").setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW).setOnMenuItemClickListener(this);
标志= FALSE; SearchManager的SearchManager的=(SearchManager的)getSystemService(Context.SEARCH_SERVICE);
mSearchView =(搜索查看)menu.findItem(9).getActionView();
mSearchView.setQueryHint(getResources()的getString(R.string.search_hint));
mSearchView.setIconifiedByDefault(假);
mSearchView.setSubmitButtonEnabled(假);
((搜索查看)searchItem.getActionView())setIconified(真)。
mSearchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
mSearchView.setFocusable(假);
mSearchView.setQuery(,FALSE); //
mSearchView.setIconified(真); //
mSearchView.clearFocus(); //
searchItem.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW); mSearchView.setOnQueryTextListener(本);
mSearchView.clearFocus();}
与 OnMenuItemClickListener
实施你的活动,并覆盖 onMenuItemClick
这样的:
@覆盖
公共布尔onMenuItemClick(菜单项项){
如果(item.getTitle()。等于(印地文)){
//做一点事
}
返回true;
}
您也可以对项目ID的开关情况:
@覆盖
公共布尔onMenuItemClick(菜单项项){
开关(item.getItemId()){
情况下0:
//做一点事
打破; 默认:
打破;
}
返回true;
}
i have added menu item programatically now im performing action on it.But it is showing null pointer exception.
Below is the code
public boolean onPrepareOptionsMenu(com.actionbar.view.Menu menu) {
// TODO Auto-generated method stub
super.onPrepareOptionsMenu(menu);
if(flag){
menu.add(0, 9, 0, "").setIcon(android.R.drawable.ic_menu_search).setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_ALWAYS| MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
menu.add(0, 1, 0, "Hindi").setShowAsAction(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
menu.add(0, 2, 0, "English").setShowAsAction(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
menu.add(0, 3, 0, "Gujarati").setShowAsAction(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
menu.add(0, 4, 0, "Punjabi").setShowAsAction(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
menu.add(0, 5, 0, "Bengali").setShowAsAction(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
menu.add(0, 6, 0, "Marathi").setShowAsAction(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
menu.add(0, 7, 0, "Talugu").setShowAsAction(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
menu.add(0, 8, 0, "Tamil").setShowAsAction(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
flag=false;
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
mSearchView = (SearchView) menu.findItem(9).getActionView();
mSearchView.setQueryHint(getResources().getString(R.string.search_hint));
mSearchView.setIconifiedByDefault(false);
mSearchView.setSubmitButtonEnabled(false);
((SearchView) searchItem.getActionView()).setIconified(true);
mSearchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
mSearchView.setFocusable(false);
mSearchView.setQuery("", false);//
mSearchView.setIconified(true); //
mSearchView.clearFocus(); //
searchItem.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_ALWAYS| MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
mSearchView.setOnQueryTextListener(this);
mSearchView.clearFocus();
}
return true;
}
This is where it is giving null at mSearchView.
mSearchView = (SearchView) menu.findItem(9).getActionView();
This is my onOptionItemSelected
@Override
public boolean onOptionsItemSelected(com.actionbar.view.MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home: {
if (mDrawerLayout.isDrawerOpen(mDrawerList)) {
mDrawerLayout.closeDrawer(mDrawerList);
} else {
mDrawerLayout.openDrawer(mDrawerList);
}
break;
}
case 0:
return true;
case 1:
if (Locale.getDefault().toString().equalsIgnoreCase("hi"))
{
//Toast.makeText(getApplicationContext(),getResources().getString(R.string.hin_sel), Toast.LENGTH_LONG).show();
} else
{
String languageToLoad = "hi"; // language
Locale locale = new Locale(languageToLoad);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config,getBaseContext().getResources().getDisplayMetrics());
Intent in=new Intent(getBaseContext(), MainActivity.class);
startActivity(in);
finish();
}
return true;
case 2:
if (Locale.getDefault().toString().equalsIgnoreCase("en")||Locale.getDefault().toString().equals("en_IN")||Locale.getDefault().toString().equals("en_US"))
{
//Toast.makeText(getApplicationContext(),getResources().getString(R.string.Al_Eng_sel), Toast.LENGTH_LONG).show();
} else {
String languageToLoad = "en"; // language
Locale locale = new Locale(languageToLoad);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config,getBaseContext().getResources().getDisplayMetrics());
Intent in=new Intent(getBaseContext(), MainActivity.class);
startActivity(in);
finish();
}
return true;
default:
System.out.println(item.getItemId());
}
// QuickContactFragment dialog = new QuickContactFragment();
// dialog.show(getSupportFragmentManager(), "QuickContactFragment");
// return true;
return super.onOptionsItemSelected(item);
}
To each dynamically added item setOnMenuItemClickListener
like:
public boolean onPrepareOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
super.onPrepareOptionsMenu(menu);
if(flag){
menu.add(0, 9, 0, "").setIcon(android.R.drawable.ic_menu_search).setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_ALWAYS| MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW).setOnMenuItemClickListener(this);
menu.add(0, 1, 0, "Hindi").setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW).setOnMenuItemClickListener(this);
menu.add(0, 2, 0, "English").setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW).setOnMenuItemClickListener(this);
menu.add(0, 3, 0, "Gujarati").setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW).setOnMenuItemClickListener(this);
menu.add(0, 4, 0, "Punjabi").setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW).setOnMenuItemClickListener(this);
menu.add(0, 5, 0, "Bengali").setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW).setOnMenuItemClickListener(this);
menu.add(0, 6, 0, "Marathi").setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW).setOnMenuItemClickListener(this);
menu.add(0, 7, 0, "Talugu").setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW).setOnMenuItemClickListener(this);
menu.add(0, 8, 0, "Tamil").setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW).setOnMenuItemClickListener(this);
flag=false;
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
mSearchView = (SearchView) menu.findItem(9).getActionView();
mSearchView.setQueryHint(getResources().getString(R.string.search_hint));
mSearchView.setIconifiedByDefault(false);
mSearchView.setSubmitButtonEnabled(false);
((SearchView) searchItem.getActionView()).setIconified(true);
mSearchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
mSearchView.setFocusable(false);
mSearchView.setQuery("", false);//
mSearchView.setIconified(true); //
mSearchView.clearFocus(); //
searchItem.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_ALWAYS| MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
mSearchView.setOnQueryTextListener(this);
mSearchView.clearFocus();
}
Implement your activity with OnMenuItemClickListener
and override onMenuItemClick
like:
@Override
public boolean onMenuItemClick(MenuItem item) {
if(item.getTitle().equals("hindi")){
//do something
}
return true;
}
You can also have a switch case on item id:
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case 0:
//do something
break;
default:
break;
}
return true;
}
这篇关于我已经添加菜单项编程现在怎么上执行动作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!