在android中,如何在启动屏幕后隐藏主屏幕上的后退按钮?
在我的应用程序中,我在启动屏幕后的工具栏上有默认的后退按钮(即主页上)。我不需要任何图标或标题在我的主页工具栏单独 如何隐藏主屏幕上的按钮 如果我通过禁用MainActivity上的后退按钮在android中,如何在启动屏幕后隐藏主屏幕上的后退按钮?,android,Android,在我的应用程序中,我在启动屏幕后的工具栏上有默认的后退按钮(即主页上)。我不需要任何图标或标题在我的主页工具栏单独 如何隐藏主屏幕上的按钮 如果我通过禁用MainActivity上的后退按钮 getSupportActionBar().setDisplayHomeAsUpEnabled(false); 它显示NullPointerException public class MainActivity extends AppCompatActivity { @Override p
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
它显示NullPointerException
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
HomeFragment homeFragment = new HomeFragment();
showFragment(homeFragment, Constants.HOME_FRAGMENT, false);
}
@Override
public void onBackPressed() {
if (getFragmentManager().getBackStackEntryCount() == 0) {
showAlertDialog(Constants.EXIT_APP, Constants.APP_NAME);
} else {
getFragmentManager().popBackStackImmediate();
}
}
public void showFragment(Fragment fragment, String back_stack_name, boolean isAddToBackStack) {
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.add(R.id.container, fragment);
if (isAddToBackStack) {
transaction.addToBackStack(back_stack_name);
}
transaction.commit();
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int vid = item.getItemId();
switch (vid) {
case android.R.id.home:
this.onBackPressed();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}
可能的原因:
1) 您没有支持操作栏
2) 您可能需要使用样式隐藏supportActionBar
3) 您正在通过编程将其隐藏在活动中
解决方案:
如果您在activty中使用工具栏,请尝试在onCreate()方法中使用以下代码:
我找到了我问题的答案
- 碎片:
((AppCompatActivity) getActivity()).getSupportActionBar().setDisplayShowCustomEnabled(false);
((AppCompatActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(false);
((AppCompatActivity) getActivity()).getSupportActionBar().setTitle(title);
((AppCompatActivity) getActivity()).getSupportActionBar().setDisplayShowCustomEnabled(false);
((AppCompatActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
((AppCompatActivity) getActivity()).getSupportActionBar().setTitle(title);
getSupportActionBar().setDisplayShowCustomEnabled(false);
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
getSupportActionBar().setTitle(title);
getSupportActionBar().setDisplayShowCustomEnabled(false); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setTitle(title);
对于带有后箭头的标题
((AppCompatActivity) getActivity()).getSupportActionBar().setDisplayShowCustomEnabled(false);
((AppCompatActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(false);
((AppCompatActivity) getActivity()).getSupportActionBar().setTitle(title);
((AppCompatActivity) getActivity()).getSupportActionBar().setDisplayShowCustomEnabled(false);
((AppCompatActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
((AppCompatActivity) getActivity()).getSupportActionBar().setTitle(title);
getSupportActionBar().setDisplayShowCustomEnabled(false);
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
getSupportActionBar().setTitle(title);
getSupportActionBar().setDisplayShowCustomEnabled(false); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setTitle(title);
- 在活动中:
((AppCompatActivity) getActivity()).getSupportActionBar().setDisplayShowCustomEnabled(false);
((AppCompatActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(false);
((AppCompatActivity) getActivity()).getSupportActionBar().setTitle(title);
((AppCompatActivity) getActivity()).getSupportActionBar().setDisplayShowCustomEnabled(false);
((AppCompatActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
((AppCompatActivity) getActivity()).getSupportActionBar().setTitle(title);
getSupportActionBar().setDisplayShowCustomEnabled(false);
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
getSupportActionBar().setTitle(title);
getSupportActionBar().setDisplayShowCustomEnabled(false); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setTitle(title);
对于带有后箭头的标题
((AppCompatActivity) getActivity()).getSupportActionBar().setDisplayShowCustomEnabled(false);
((AppCompatActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(false);
((AppCompatActivity) getActivity()).getSupportActionBar().setTitle(title);
((AppCompatActivity) getActivity()).getSupportActionBar().setDisplayShowCustomEnabled(false);
((AppCompatActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
((AppCompatActivity) getActivity()).getSupportActionBar().setTitle(title);
getSupportActionBar().setDisplayShowCustomEnabled(false);
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
getSupportActionBar().setTitle(title);
getSupportActionBar().setDisplayShowCustomEnabled(false); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setTitle(title);
对于彩色后退按钮,请在样式中修改
<style name="ToolbarColoredBackArrow" parent="AppTheme">
<item name="android:textColorSecondary">#ffffff</item> <!-- white arrow -->
</style>
#ffffff
在工具栏中使用主题
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/colorPrimary"
app:theme="@style/ToolbarColoredBackArrow"
app:popupTheme="@style/AppTheme.PopupOverlay"/>
这意味着getSupportActionBar()方法返回fall.S。那么,我现在应该怎么做才能使用actionbaractivity、activity或appcompactactivity将主页中的默认图标隐藏起来呢?我正在使用appcompactactivity。您可以在问题中发布异常日志吗。