Dan*_*aor 166 android android-actionbar android-homebutton
我正在尝试显示Back button上Action bar移动上一页/活动或主页(第一次打开).我不能这样做.
我的代码.
ActionBar actionBar = getActionBar();
actionBar.setHomeButtonEnabled(true);
Run Code Online (Sandbox Code Playgroud)
代码在onCreate.
小智 197
这是一个简单的显示后退按钮
actionBar.setDisplayHomeAsUpEnabled(true);
Run Code Online (Sandbox Code Playgroud)
然后你可以在onOptionsItemSelected上自定义后台事件
case android.R.id.home:
this.finish();
return true;
Run Code Online (Sandbox Code Playgroud)
Inz*_* IT 180
我认为这onSupportNavigateUp()是最好和最简单的方法,请检查以下步骤.步骤1是必要的,第二步有替代方案.
步骤1显示后退按钮:在onCreate()方法中添加此行以显示后退按钮.
assert getSupportActionBar() != null; //null check
getSupportActionBar().setDisplayHomeAsUpEnabled(true); //show back button
Run Code Online (Sandbox Code Playgroud)
第2步实现后退单击:覆盖此方法
@Override
public boolean onSupportNavigateUp(){
finish();
return true;
}
Run Code Online (Sandbox Code Playgroud)
多数民众赞成你完成
或步骤2备选:您可以将清单文件中的元素添加为
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="MainActivity" />
Run Code Online (Sandbox Code Playgroud)
编辑:如果你没有使用AppCompatActivity,那么不要使用supportword,你可以使用
getActionBar().setDisplayHomeAsUpEnabled(true); // In `OnCreate();`
// And override this method
@Override
public boolean onNavigateUp(){
finish();
return true;
}
Run Code Online (Sandbox Code Playgroud)
感谢@atariguy的评论.
Mat*_*ers 66
魔术发生在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);
}
}
Run Code Online (Sandbox Code Playgroud)
hoo*_*oot 46
官方解决方案
将这两个代码段添加到SubActivity中
@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);
}
Run Code Online (Sandbox Code Playgroud)
添加元数据和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>
Run Code Online (Sandbox Code Playgroud)
参考此处:http://developer.android.com/training/implementing-navigation/ancestral.html
Abh*_*hek 31
将这些行添加到onCreate()
android.support.v7.app.ActionBar actionBar = getSupportActionBar();
actionBar.setHomeButtonEnabled(true);
actionBar.setDisplayHomeAsUpEnabled(true);
Run Code Online (Sandbox Code Playgroud)
并在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);
}
}
Run Code Online (Sandbox Code Playgroud)
希望对你有帮助..!
小智 22
尝试此代码,仅在需要后退按钮时才考虑它.
@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;
}
Run Code Online (Sandbox Code Playgroud)
Bru*_*res 16
在你的onCreate方法上添加:
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
Run Code Online (Sandbox Code Playgroud)
在AndroidManifest.xml父活动中定义时(按下操作栏中的后退按钮后将调用的活动):
在<activity>Manifest 的定义中,添加以下行:
android:parentActivityName="com.example.activities.MyParentActivity"
Run Code Online (Sandbox Code Playgroud)
Khu*_*aza 10
在您的onCreate()方法中添加这一行
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
Run Code Online (Sandbox Code Playgroud)
并且,在同一个Activity中,添加这个方法来处理按钮点击
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
Run Code Online (Sandbox Code Playgroud)
我知道我有点迟了,但能够通过直接关注文档解决这个问题.
添加元数据标记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>
Run Code Online (Sandbox Code Playgroud)
接下来,启用您的后退(向上)按钮 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);
}
Run Code Online (Sandbox Code Playgroud)
而且,你将全部成立!
资料来源:Android开发者文档
小智 5
我知道以上是很多有用的解决方案,但这次我读了这篇文章(当前的Android Studio 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>
Run Code Online (Sandbox Code Playgroud)
其次,确保您的子活动扩展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);
}
}
Run Code Online (Sandbox Code Playgroud)
希望这会有所帮助!
小智 5
这很简单,对我很有效
将此添加到 onCreate() 方法中
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
Run Code Online (Sandbox Code Playgroud)
在 oncreate() 方法之外添加这个
@Override
public boolean onOptionsItemSelected(MenuItem item) {
onBackPressed();
return true;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
285937 次 |
| 最近记录: |