我有两个活动,A和B.当活性A被第一次启动,它访问Intent传递给它(因为Bundle是null,因为它应该通过在第一时间),并相应地显示信息:
CustInfo m_custInfo;
...
protected void onCreate(Bundle savedInstanceState)
{
...
Bundle bundle = (savedInstanceState == null) ? getIntent().getExtras() : savedInstanceState;
m_custInfo = (CustInfo) m_bundle.getSerializable("CustInfo");
if (m_custInfo != null
...
}
Run Code Online (Sandbox Code Playgroud)
这在第一次通过时工作正常.该EditText控制和ListView正确地填写.
现在,当单击列表中的项目时,将启动活动B以显示详细信息:
m_custInfo = m_arrCustomers.get(pos);
Intent intent = new Intent(A.this, B.class);
intent.putExtra("CustInfo", m_custInfo); // CustInfo is serializable
// printing this intent, it shows to have extras and no flags
startActivityForResult(intent, 1);
Run Code Online (Sandbox Code Playgroud)
在acivity B启动之前,框架调用A被覆盖onSaveInstanceState():
protected void onSaveInstanceState(Bundle outState)
{ …Run Code Online (Sandbox Code Playgroud) 我的应用程序能够使用ActionBar上的SearchView搜索项目(其他应用程序).
该应用程序使用Google的支持库,它适用于API 9的所有Android版本.
在Lollipop上,当我点击搜索操作项以便开始搜索时,我注意到左上角的向上/向后按钮变为白色,这对于这种情况很糟糕,因为操作栏背景也很白:

奇怪的是,它并不总是发生,我不认为它发生在不是Lollipop的Android版本上(在多个仿真器和设备上测试).
另一个奇怪的事情是导航抽屉图标似乎没问题,以及searchView内的X图标.
这是我的工具栏的XML:
<android.support.v7.widget.Toolbar
android:id="@+id/activity_app_list__toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:minHeight="?attr/actionBarSize" />
Run Code Online (Sandbox Code Playgroud)
"colorPrimary"设置为:#ffEFEFEF.
此外,主题的活动的父级是"Theme.AppCompat.Light.NoActionBar",因为我已将工具栏设置为actionBar.
我该如何解决这个问题?
这个问题的原因是什么?为什么它在其他Android版本上运行良好?
我使用android导航体系结构组件实现了对LoginFragment的条件导航。我现在面临的问题是,我想隐藏工具栏上的向上按钮,并在用户未登录时禁用任何应用内导航。
我希望能够通过一种活动的方法来实现这一点,其中“活动”像在android sunflower演示中一样设置应用内导航UI和navController,并且导航目标是“片段”。
我实现了此处描述的条件导航: 导航体系结构组件-登录屏幕
如何使用导航体系结构组件正确实现在登录屏幕上隐藏导航和向上按钮?
android up-button android-navigationview android-architecture-components android-architecture-navigation
在我的应用程序(minSdkVersion15)我有一个Toolbar,而不是ActionBar与NavigationDrawer片段之间的切换.一些TabBar片段里面有子片段.这些子片段是ListViews和它们的onItemClickListener触发器DetailFragment.我打电话给出setDisplayHomeAsUpEnabled()了一个向上的箭头,DetailFragment但是我不能对它进行任何动作,甚至是敬酒.我已经尝试了这个和处理switch (item.getItemId()),onOptionsItemSelected()但两种解决方案都不适合我.我错过了什么,却无法辨认出什么.
这是我的代码:
public class MainActivity extends AppCompatActivity implements FragmentManager.OnBackStackChangedListener {
//...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Listen for changes in the back stack
getSupportFragmentManager().addOnBackStackChangedListener(this);
//Handle when activity is recreated like on orientation Change
shouldDisplayHomeUp();
mToolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(mToolbar);
final ActionBar actionBar = getSupportActionBar(); //...
Run Code Online (Sandbox Code Playgroud)
...
public void shouldDisplayHomeUp(){
//Enable …Run Code Online (Sandbox Code Playgroud) 我正在使用Android Studio模板中的导航抽屉.我想在我的一些片段中使用UP按钮(箭头)插入"汉堡"按钮.我用AppCompatActivity.
我使用此代码显示UP按钮箭头:
public void UseUpButton(boolean value) {
ActionBar actionBar = getSupportActionBar();
if (value) {
actionBar.setDisplayHomeAsUpEnabled(false);
toggle.setDrawerIndicatorEnabled(false);
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setDisplayShowHomeEnabled(true);
} else {
toggle.setDrawerIndicatorEnabled(true);
}
}
Run Code Online (Sandbox Code Playgroud)
但是我无法点击这个按钮.我试过一些方法:
onOptionsItemSelectedpublic boolean onOptionsItemSelected(MenuItem item) {
Log.d("WTF", "menu");
switch (item.getItemId())
{
case android.R.id.home:
getFragmentManager().popBackStack();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
Run Code Online (Sandbox Code Playgroud)
我添加getSupportActionBar().setHomeButtonEnabled(true);到我的Activity::onCreate,但是onOptionsItemSelected当我按下向上按钮时没有调用,当我按下菜单项时它正常工作.
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open,
R.string.navigation_drawer_close);
drawer.setDrawerListener(toggle); …Run Code Online (Sandbox Code Playgroud) android android-fragments android-actionbar up-button navigation-drawer
我有一个SettingsActivity应该有一个向上链接的向上按钮MainActivity.出现按钮,但单击时不执行任何操作.后退按钮工作正常.
AndroidManifest.xml:
<activity
android:name=".SettingsActivity"
android:label="@string/title_activity_settings"
android:parentActivityName=".MainActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.myapp.MainActivity" />
</activity>
Run Code Online (Sandbox Code Playgroud)
我尝试添加一个行动,onOptionsItemSelected为R.id.home没有运气.我也尝试添加getActionBar().setDisplayHomeAsUpEnabled(true);到onCreate(),但它崩溃,出现以下错误的应用:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.myapp/com.example.myapp.SettingsActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.ActionBar.setDisplayHomeAsUpEnabled(boolean)'
Run Code Online (Sandbox Code Playgroud) 我试图使用具有不同颜色的自定义向上/向后按钮图标,因为我一直无法弄清更改默认android向上/向后按钮颜色的直接方法。
我下载了一个128x128的后退按钮图标(PNG),并将其更改为所需的颜色,并将其放置在我的可绘制文件夹中。但是我仍然无法显示它。
到目前为止,这是我尝试过的
在我的Styles.xml中,包括以下内容:
<style name="customStyle" parent="@style/Theme.AppCompat.Light.DarkActionBar">
<item name="actionBarStyle">@style/customActionBarStyle</item>
<item name="android:textColorPrimary">@color/titletextcolor</item>
</style>
<style name="customActionBarStyle" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
<item name="background">@drawable/custom</item>
<item name="android:homeAsUpIndicator">@drawable/upbutton</item>
</style>
Run Code Online (Sandbox Code Playgroud)
在我的活动的onCreate中,我包括了以下内容:
getSupportActionBar().setHomeAsUpIndicator(R.drawable.upbutton);
Run Code Online (Sandbox Code Playgroud)
在onOptionsItemSelected中,我这样做:
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case android.R.id.home:
finish();
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
请谁能帮我弄清楚我做错了什么,或者我错过了什么?提前致谢。
在与蓝牙相关的应用程序(带有minSdkVersion="18")中,我有一个MainActivity.java,显示以下 3 个 UI 片段之一:

要显示“向上按钮”并处理“后退按钮”,我有以下代码:
public class MainActivity extends Activity
implements BleWrapperUiCallbacks {
// set in onResume() of each fragment
private Fragment mActiveFragment = null;
´ @Override
public void onBackPressed() {
if (!getFragmentManager().popBackStackImmediate())
super.onBackPressed();
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_ACTION_BAR);
setContentView(R.layout.activity_root);
getActionBar().setDisplayHomeAsUpEnabled(true);
if (savedInstanceState == null) {
Fragment fragment = new MainFragment();
getFragmentManager().beginTransaction()
.replace(R.id.root, fragment, "main")
.commit();
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch …Run Code Online (Sandbox Code Playgroud) android android-fragments android-actionbar up-button android-navigation
我需要在工具栏的左侧有一个箭头"后退"按钮,由于某种原因它指向右而不是左.
如何将其设置为相反的方向?
这是我的代码:
mToolbar = (Toolbar) findViewById(R.id.machine_tool_bar);
setSupportActionBar(mToolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
Run Code Online (Sandbox Code Playgroud)
编辑:我的设备语言是从右到左.我试图设置layoutDirection LTR,但它没有帮助..
android ×9
up-button ×9
android-architecture-components ×1
android-architecture-navigation ×1
java ×1
searchview ×1
toolbar ×1
xml ×1