以下代码导致后箭头出现在ActionBar中:
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
Run Code Online (Sandbox Code Playgroud)
我正在寻找arrow drawable的资源ID,即android.R.drawable.xxx.我需要这个ID的原因是我可以在我的应用程序的其他地方手动设置相同的箭头(大小和颜色).
我尝试制作自己的drawable并使用它,但大小与ActionBar中的大小不同.
android back android-actionbar android-drawable up-navigation
我有任意数量的分层嵌套视图/活动.操作栏应显示向上导航按钮以在任何视图中导航到更高级别.为此,谷歌文档说我必须在活动的xml定义中使用标记设置父活动.但是,我正在动态创建我的活动,并且子元素可以与它的父元素具有相同的活动.
那么如何在运行时将父活动设置为实际的父实例?
android android-activity android-actionbar up-navigation android-navigation
标题几乎是不言自明的。
建筑学:
我在替换片段之前禁用抽屉切换并将 Home As Up 指示器设置为:
mDrawerToggle.setDrawerIndicatorEnabled(false);
drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
actionBar.setHomeAsUpIndicator(R.drawable.ic_arrow_back_white_24dp);
actionBar.setDisplayHomeAsUpEnabled(true);
Run Code Online (Sandbox Code Playgroud)
然后,当单击 UP 图标时,没有任何反应。我调试了它,但没有调用 onOptionsItemSelected 方法。
仅供参考,我添加到菜单中的所有其他按钮(搜索、刷新等)都可以工作,并且 onOptionsItemSelected 会被调用。
我有一个活动 A,当我按下工具栏项时,它使用 startActivity(intent) 启动活动 B。每当我按下后退按钮或向上导航图标时,它都会关闭我的应用程序。我相信这是因为我在我的父活动中使用了 launchMode="singleTop"(我使用它是因为我有一个搜索视图和一个可搜索的配置,因为我不想开始我的另一个活动实例进行搜索)。所以问题是:如何在不关闭我的应用程序的情况下使用向上导航和后退按钮从子活动(B)返回到父活动(A)?我已经搜索过了,我发现了一些关于 onNewIntent() 的信息。如果这是我的解决方案,我应该如何正确使用它?
这是我的清单文件:
<activity
android:name="com.example.fernando.inspectionrover.MainActivity"
android:screenOrientation="landscape">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.intent.action.SEARCH" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data
android:name="android.app.searchable"
android:resource="@xml/searchable" />
</activity>
<activity
android:name="com.example.fernando.inspectionrover.BluetoothSettingsActivity"
android:parentActivityName="com.example.fernando.inspectionrover.MainActivity"
android:screenOrientation="landscape">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.fernando.inspectionrover.MainActivity" />
Run Code Online (Sandbox Code Playgroud)
以下是如何开始我的新活动:
switch (id) {
case R.id.bluetoothActivity:
Intent switchActivity = new Intent(this, BluetoothSettingsActivity.class);
startActivity(switchActivity);
Log.i(LIFE_CYCLE, "Switching from " + getLocalClassName() + " to Bluetooth Setting Activity");
finish();
break;
}
Run Code Online (Sandbox Code Playgroud) 我有一个父Activity,它启动了一个子活动.
在儿童活动中,我做:
toolbar = (Toolbar) findViewById(R.id.app_bar);
setSupportActionBar(toolbar);
getSupportActionBar().setTitle("Ride");
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
Run Code Online (Sandbox Code Playgroud)
当我单击Home/Up按钮时,我finish
是活动.
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
Run Code Online (Sandbox Code Playgroud)
此外,我finish
还在Child Activity中的另一个地方,在我所拥有的两个地方finish
,它都会回到Parent Activity.
我的问题:
我的问题是,我想刷新父活动只有在的情况下一个的finishes
.
当我没有从Up按钮完成结束时- Parent Activity中的数据发生了变化,所以 - 当我按Back/Up按钮时,不需要刷新Parent,但当我执行另一个时finish
,我想刷新的家长.
我怎么能检测出来?