Java 为什么删除此下拉菜单会破坏此应用程序?
这不是我的代码,但我正在使用一个包含两个活动和一个下拉菜单的应用程序。您可以通过下拉菜单在这两个活动之间导航。我的目标是删除其中一个活动和下拉菜单。我所完成的只是从下拉菜单中删除活动,使其默认为另一个,所以现在我需要删除下拉菜单。但是,由于显示的活动是由下拉列表定义的,如果我尝试删除下拉列表,它只会绘制一个只显示操作栏的空白页面。从这个代码判断,有人有可能找到解决方案吗Java 为什么删除此下拉菜单会破坏此应用程序?,java,android,android-fragments,drop-down-menu,Java,Android,Android Fragments,Drop Down Menu,这不是我的代码,但我正在使用一个包含两个活动和一个下拉菜单的应用程序。您可以通过下拉菜单在这两个活动之间导航。我的目标是删除其中一个活动和下拉菜单。我所完成的只是从下拉菜单中删除活动,使其默认为另一个,所以现在我需要删除下拉菜单。但是,由于显示的活动是由下拉列表定义的,如果我尝试删除下拉列表,它只会绘制一个只显示操作栏的空白页面。从这个代码判断,有人有可能找到解决方案吗 导入android.annotation.TargetApi; 导入android.app.ActionBar; 导入and
导入android.annotation.TargetApi;
导入android.app.ActionBar;
导入android.net.Uri;
导入android.os.Bundle;
导入android.content.Context;
导入android.content.Intent;
导入android.os.Build;
导入android.support.v4.app.DialogFragment;
导入android.support.v4.app.Fragment;
导入android.support.v4.app.FragmentActivity;
导入android.view.Menu;
导入android.view.MenuItem;
导入android.widget.ArrayAdapter;
公共类MainActivity扩展了FragmentActivity实现
ActionBar.OnNavigationListener{
受保护的最终字符串日志=“.MainActivity”;
/**
*表示
*当前下拉位置。
*/
私有静态最终字符串状态\u SELECTED\u NAVIGATION\u ITEM=“SELECTED\u NAVIGATION\u ITEM”;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//设置操作栏以显示下拉列表。
最终ActionBar ActionBar=getActionBar();
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setNavigationMode(actionBar.NAVIGATION\u MODE\u列表);
actionBar.setDisplayShowHomeEnabled(真);
actionBar.setIcon(R.drawable.ic_启动器);
//在操作栏中设置下拉列表导航。
actionBar.setListNavigationCallbacks(
//指定SpinnerAdapter以填充下拉列表。
新的阵列适配器(getActionBarThemedContextCompat(),
android.R.layout.simple\u list\u item\u 1,
android.R.id.text1,新字符串[]{
//getString(R.string.title\u section\u recent),
getString(R.string.title\u section\u all),}),this);
/**if(!getPreferences(Context.MODE_PRIVATE).getBoolean(“免责声明_accepted”,false)){
DialogFragment dialog=新免责声明DialogFragment();
show(getSupportFragmentManager(),“DisclaiderDialogFragment”);
}**/
}
/**
*{@link ActionBar#getThemedContext()}的向后兼容版本
*只要返回{@link android.app.Activity}如果
*getThemedContext
不可用。
*/
@TargetApi(构建版本代码冰淇淋三明治)
私有上下文getActionBarThemedContextCompat(){
if(Build.VERSION.SDK\u INT>=Build.VERSION\u代码.冰淇淋\u三明治){
返回getActionBar().getThemedContext();
}否则{
归还这个;
}
}
@凌驾
RestoreInstanceState上的公共无效(Bundle savedInstanceState){
//恢复以前序列化的当前下拉列表位置。
if(savedInstanceState.containsKey(状态\选定\导航\项)){
getActionBar().setSelectedNavigationItem(
savedInstanceState.getInt(STATE_SELECTED_NAVIGATION_ITEM));
}
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(R.menu.main,menu);
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
开关(item.getItemId()){
案例R.id.action\u view\u来源:
意向i2=新意向(意向.行动\视图);
i2.setData(Uri.parse(this.getString(R.string.url_source));
这是一种新的触觉(i2);
返回true;
案例R.id.action\u view\u翻译:
意向i3=新意向(意向.行动\视图);
i3.setData(Uri.parse(this.getString(R.string.url_translation));
这是指触觉(i3);
返回true;
案例R.id.action\u view\u bug:
意向i4=新意向(意向.行动\视图);
i4.setData(Uri.parse(this.getString(R.string.url_bugs));
这是指触觉(i4);
返回true;
违约:
返回super.onOptionsItemSelected(项目);
}
}
@凌驾
SaveInstanceState上的公共无效(束超出状态){
//序列化当前下拉列表位置。
outState.putInt(STATE\u SELECTED\u NAVIGATION\u项,getActionBar()
.getSelectedNavigationIndex());
}
@凌驾
公共布尔值onNavigationItemSelected(整型位置,长id){
//选择给定的下拉项后,将其内容显示在
//容器视图。
片段=空;
开关(位置){
案例0:
fragment=新的AllTasksListFragment();
打破
案例1:
//fragment=新的RecentTaskListFragment();
打破
}
getSupportFragmentManager().beginTransaction()
.replace(R.id.container,fragment).commit();
返回true;
}
}
因为您的所有活动只显示一个片段。并且在onNavigationItemSelected期间选择片段。如果没有调用它,那么您永远不会设置默认片段。因此,在onCreate中,添加一个事务以添加要保留的片段。然后你可以杀死掉掉的东西