我想显示一个Back button
上的Action bar
移动前一页/活动或到主页(第一开口)。 我不能做到这一点。
我的代码。
ActionBar actionBar = getActionBar();
actionBar.setHomeButtonEnabled(true);
该代码是在onCreate
。
我想显示一个Back button
上的Action bar
移动前一页/活动或到主页(第一开口)。 我不能做到这一点。
我的代码。
ActionBar actionBar = getActionBar();
actionBar.setHomeButtonEnabled(true);
该代码是在onCreate
。
嗯,这是一个简单的显示后退按钮
actionBar.setDisplayHomeAsUpEnabled(true);
然后你就可以自定义在后面的事件onOptionsItemSelected
case android.R.id.home:
this.finish();
return true;
我认为onSupportNavigateUp()
就是这样做的,请检查下面的步骤最好和最简单的方法。 步骤1是必要的,步骤2具有可选的。
步骤1示出的后退按钮:在添加此行onCreate()
方法来显示后退按钮。
assert getSupportActionBar() != null; //null check
getSupportActionBar().setDisplayHomeAsUpEnabled(true); //show back button
回来点击第2步实施:重写此方法
@Override
public boolean onSupportNavigateUp(){
finish();
return true;
}
多数民众赞成你完成
或步骤2的替代:您可以在清单文件作为加元的活动
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="MainActivity" />
编辑:如果您不使用AppCompat
活动,则不要使用support
的话,你可以使用
getActionBar().setDisplayHomeAsUpEnabled(true); // In `OnCreate();`
// And override this method
@Override
public boolean onNavigateUp(){
finish();
return true;
}
由于@atariguy发表评论。
魔术发生在onOptionsItemSelected
。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
// app icon in action bar clicked; go home
Intent intent = new Intent(this, HomeActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
官方的解决方案
这两个代码片段添加到您的子活动
@Override
public void onCreate(Bundle savedInstanceState) {
...
getActionBar().setDisplayHomeAsUpEnabled(true);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
// Respond to the action bar's Up/Home button
case android.R.id.home:
NavUtils.navigateUpFromSameTask(this);
return true;
}
return super.onOptionsItemSelected(item);
}
添加元数据和parentActivity体现支持下SDK。
<application ... >
...
<!-- The main/home activity (it has no parent activity) -->
<activity
android:name="com.example.myfirstapp.MainActivity" ...>
...
</activity>
<!-- A child of the main activity -->
<activity
android:name="com.example.myfirstapp.SubActivity"
android:label="@string/title_activity_display_message"
android:parentActivityName="com.example.myfirstapp.MainActivity" >
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.myfirstapp.MainActivity" />
</activity>
</application>
参考这里: http://developer.android.com/training/implementing-navigation/ancestral.html
添加这些行的onCreate()
android.support.v7.app.ActionBar actionBar = getSupportActionBar();
actionBar.setHomeButtonEnabled(true);
actionBar.setDisplayHomeAsUpEnabled(true);
在onOptionItemSelected
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
//Write your logic here
this.finish();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
希望对你有帮助..!
试试这个代码,认为只有当你需要后退按钮。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//YOUR CODE
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
//YOUR CODE
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
onBackPressed();
return true;
}
在您onCreate
方法添加:
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
虽然在定义AndroidManifest.xml
父活动(一次是在操作栏中的后退按钮被按下,将被称为活动):
在您的<activity>
在清单的定义,添加一行:
android:parentActivityName="com.example.activities.MyParentActivity"
我知道我有点晚,但可以通过下面的解决这个问题的文档直接。
元数据标签添加到AndroidManifest.xml
(因此系统知道)
<activity
android:name=".Sub"
android:label="Sub-Activity"
android:parentActivityName=".MainChooser"
android:theme="@style/AppTheme.NoActionBar">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainChooser" />
</activity>
接下来,使你的背部(UP)按钮MainActivity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_child);
// my_child_toolbar is defined in the layout file
Toolbar myChildToolbar =
(Toolbar) findViewById(R.id.my_child_toolbar);
setSupportActionBar(myChildToolbar);
// Get a support ActionBar corresponding to this toolbar
ActionBar ab = getSupportActionBar();
// Enable the Up button
ab.setDisplayHomeAsUpEnabled(true);
}
而且,你将被设置好了!
来源: Android开发者文档
我知道上面有很多有用的解决方案,但是这一次我看了这篇文章(目前Android 2.1.2工作室与SDK 23)一些上述方法不起作用。
下面是我为子活动的解决方案是MapsActivity
首先,你需要添加parentActivity在
AndroidManifest.xml中
像这样 :
<application ... >
...
<!-- Main activity (which has no parent activity) -->
<activity
android:name="com.example.myapp.MainActivity" ...>
...
</activity>
<!-- A child of the main activity -->
<activity
.....
android:parentActivityName=".MainActivity" >
<!-- Support Parent activity for Android 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.myapp.MainActivity" />
</activity>
</application>
其次,确保您的子活动扩展AppCompatActivity
,不FragmentActivity。
第三,重写onOptionsItemSelected()
方法
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
// app icon action bar is clicked; go to parent activity
this.finish();
return true;
case R.id.action_settings:
return true;
default:
return super.onOptionsItemSelected(item);
}
}
希望这将有助于!
为了实现这一目标,有简单的两个步骤,
步骤1:进入AndroidManifest.xml
并在添加此参数<activity>
标签- android:parentActivityName=".home.HomeActivity"
例:
<activity
android:name=".home.ActivityDetail"
android:parentActivityName=".home.HomeActivity"
android:screenOrientation="portrait" />
第2步:在ActivityDetail
添加您的action
为前一页/活动
例:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
}
在onCreate方法直写
Toolbar toolbar = findViewById(R.id.tool);
setSupportActionBar(toolbar);
if (getSupportActionBar() != null) {
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
}
}
@Override
public boolean onSupportNavigateUp() {
onBackPressed();
return true;
}
@Override
public void onBackPressed() {
super.onBackPressed();
startActivity(new Intent(ActivityOne.this, ActivityTwo.class));
finish();
}
这是XML文件 -
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/colorPrimary"
android:theme="@style/ThemeOverlay.AppCompat.Dark"
android:id="@+id/tool">
在styles.xml其更改为
Theme.AppCompat.Light.NoActionBar
这是所有我们必须做的。
试试这个,在你的onCreate()
getActionBar().setHomeButtonEnabled(true);
getActionBar().setDisplayHomeAsUpEnabled(true);
而对于clickevent,
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
// app icon in action bar clicked; goto parent activity.
this.finish();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
我用这种方式解决
@Override
public boolean onOptionsItemSelected(MenuItem item){
switch (item.getItemId()) {
case android.R.id.home:
onBackPressed();
finish();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
public void onBackPressed(){
Intent backMainTest = new Intent(this,MainTest.class);
startActivity(backMainTest);
finish();
}
我的工作代码回去屏幕。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
Toast.makeText(getApplicationContext(), "Home Clicked",
Toast.LENGTH_LONG).show();
// go to previous activity
onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
}
public void initToolbar(){
//this set back button
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
//this is set custom image to back button
getSupportActionBar().setHomeAsUpIndicator(R.drawable.back_btn_image);
}
//this method call when you press back button
@Override
public boolean onSupportNavigateUp(){
finish();
return true;
}
ActionBar actionBar=getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
}
这可能是太晚了回答,但我有一个在我看来更短,更实用的解决方案。
// Inside your onCreate method, add these.
ActionBar actionBar = getSupportActionBar();
actionBar.setHomeButtonEnabled(true);
actionBar.setDisplayHomeAsUpEnabled(true);
// After the method's closing bracket, add the following method exactly as it is and voiulla, a fully functional back arrow appears at the action bar
@Override
public boolean onOptionsItemSelected(MenuItem item) {
onBackPressed();
return true;
}
这很简单,对我的工作非常出色
添加此内部onCreate()方法
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
添加此外onCreate()方法
@Override
public boolean onOptionsItemSelected(MenuItem item) {
onBackPressed();
return true;
}
在的OnCreate(); 写这篇设备 - >
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
然后实现以下方法在该类
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
// app icon in action bar clicked; go home
onBackPressed();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
的Manifest.xml
<activity
android:name=".Activity.SecondActivity"
android:label="Second Activity"
android:parentActivityName=".Activity.MainActivity"
android:screenOrientation="portrait"></activity>