hay*_*ssi 63 android android-layout android-actionbar
我一直试图在操作栏上添加一个后退按钮.
我希望我的观点看起来像这样:

我想在操作栏的左侧添加后退按钮.
我添加了这段代码
ActionBar actionBar = getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
我怎样才能解决这个问题?
小智 127
设定后
actionBar.setHomeButtonEnabled(true);
添加以下代码:
@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);
}
}
Run Code Online (Sandbox Code Playgroud)
cla*_*219 54
加
actionBar.setHomeButtonEnabled(true);
Run Code Online (Sandbox Code Playgroud)
然后添加以下内容
@Override
public boolean onOptionsItemSelected(MenuItem menuItem)
{
switch (menuItem.getItemId()) {
case android.R.id.home:
onBackPressed();
return true;
default:
return super.onOptionsItemSelected(menuItem);
}
}
Run Code Online (Sandbox Code Playgroud)
正如naXa所建议的,我已经添加了一个检查itemId,以便在操作栏上有多个按钮时使其正常工作.
Jas*_*ulo 26
这个对我有用:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_your_activity);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
// ... other stuff
}
@Override
public boolean onSupportNavigateUp(){
finish();
return true;
}
Run Code Online (Sandbox Code Playgroud)
当您使用SupportActionBar中的后退按钮时,将调用onSupportNavigateUp()方法.
小智 24
设定后
actionBar.setHomeButtonEnabled(true);
Run Code Online (Sandbox Code Playgroud)
您必须在AndroidManifest.xml中配置父活动
<activity
android:name="com.example.MainActivity"
android:label="@string/app_name"
android:theme="@style/Theme.AppCompat" />
<activity
android:name="com.example.SecondActivity"
android:theme="@style/Theme.AppCompat" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.MainActivity" />
</activity>
Run Code Online (Sandbox Code Playgroud)
请点击此处了解更多信息http://developer.android.com/training/implementing-navigation/ancestral.html
小智 10
有两种方法可以解决这个问题.
选项1:更新Android清单 如果始终从同一活动调用设置活动,则可以在Android清单中建立关系.Android会自动在ActionBar中显示"后退"按钮
<activity
android:name=".SettingsActivity"
android:label="Setting Activity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.example.MainActivity" />
</activity>
Run Code Online (Sandbox Code Playgroud)
选项2:更改ActionBar的设置 如果您不知道哪个Activity将调用Settings Activity,您可以像这样创建它.在您的活动中首先扩展ActionBarActivity(确保您的@imports与您正在寻找的兼容性级别相匹配).
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings_test);
ActionBar actionBar = getSupportActionBar();
actionBar.setHomeButtonEnabled(true);
actionBar.setDisplayHomeAsUpEnabled(true);
}
Run Code Online (Sandbox Code Playgroud)
然后,检测"后退按钮"按下并告诉Android关闭当前打开的活动.
@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);
}
}
Run Code Online (Sandbox Code Playgroud)
应该这样做!
你需要检查menuItem.getItemId()针对android.R.id.home的onOptionsItemSelected方法
Android Sherlock ActionBar Up按钮重复
首先使用这个:
ActionBar bar = getSupportActionBar();
bar.setDisplayHomeAsUpEnabled(true);
Run Code Online (Sandbox Code Playgroud)
然后在onOptionsItemSelected方法中设置按钮单击操作
@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)
更简单,更好:对于API> = 16
只需在Manifest中为每个活动添加"parentActivityName".后退按钮将自动将您带到父活动.
<activity
android:name="com.example.myfirstapp.DisplayMessageActivity"
android:label="@string/title_activity_display_message"
android:parentActivityName="com.example.myfirstapp.MainActivity" >
Run Code Online (Sandbox Code Playgroud)
使用此按钮显示后退按钮并移至上一个活动,
final ActionBar actionBar = getSupportActionBar();
assert actionBar != null;
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setHomeAsUpIndicator(R.drawable.back_dark);
@Override
public boolean onOptionsItemSelected(final MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
onBackPressed();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
Run Code Online (Sandbox Code Playgroud)
如果有其他人需要解决方案
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == android.R.id.home) {
onBackPressed();
}
return super.onOptionsItemSelected(item);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
137950 次 |
| 最近记录: |