Activity 在单击 ActionBar 后退导航按钮时未返回到上一个 activity
Activity is not returning to previous activity while clicking on ActionBar back navigation button
我的 Activity 正在扩展 ActionBarActivity 并且我们正在 onCreate() 中设置一个后退导航按钮:
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if(getSupportActionBar()!=null)
{
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
}
对于后按,完成这个 activity 是在给定的覆盖方法上,但它不会移动到之前的 activity
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case R.id.home:
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
您的ID有误。所以请将您的 ID 'R.id.home' 更改为 'android.R.id.home:'。
switch (item.getItemId())
{
case android.R.id.home:
finish();
return true;
}
试试这个。
请参考以下代码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_next);
getActionBar().setHomeButtonEnabled(true);
getActionBar().setDisplayHomeAsUpEnabled(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);
}
}
需要调用onBackPressed函数
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case android.R.id.home:
onBackPressed();
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
您需要覆盖 onBackPressed 方法来处理 ActionBar 上的后退按钮(主页按钮)。
@Override
public void onBackPressed() {
super.onBackPressed();
// your code here
// finish();
}
You have to set toolbar before get .
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar mToolBar = (Toolbar) findViewById(R.id.app_bar);
setSupportActionBar(mToolBar);
getSupportActionBar().setTitle("Some titile);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mToolBar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
/**
change code here*/
}
});
}
要提供正确的向上导航,您必须:
在清单中定义父级 activity。
<activity
android:name=".MainActivity"
android:parentActivityName=".HomeActivity"
....>
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".HomeActivity" />
</activity>
并且在 MainActivity 中:
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
MainActivity 的xml 中应该有一个工具栏。然后覆盖 onOptionsItemSelected.
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case android.R.id.home:
finish();
return true;
}
}
而不是使用 finish(),您应该考虑使用 NavUtils.navigateUpFromSameTask(this)
或 NavUtils 的其他类似方法 class。
使用像 singleTop 这样的启动模式来防止重新加载父级 activity。
可以找到有关正确向上导航的更多信息 here。
我的 Activity 正在扩展 ActionBarActivity 并且我们正在 onCreate() 中设置一个后退导航按钮:
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if(getSupportActionBar()!=null)
{
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
}
对于后按,完成这个 activity 是在给定的覆盖方法上,但它不会移动到之前的 activity
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case R.id.home:
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
您的ID有误。所以请将您的 ID 'R.id.home' 更改为 'android.R.id.home:'。
switch (item.getItemId())
{
case android.R.id.home:
finish();
return true;
}
试试这个。
请参考以下代码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_next);
getActionBar().setHomeButtonEnabled(true);
getActionBar().setDisplayHomeAsUpEnabled(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);
}
}
需要调用onBackPressed函数
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case android.R.id.home:
onBackPressed();
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
您需要覆盖 onBackPressed 方法来处理 ActionBar 上的后退按钮(主页按钮)。
@Override
public void onBackPressed() {
super.onBackPressed();
// your code here
// finish();
}
You have to set toolbar before get .
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar mToolBar = (Toolbar) findViewById(R.id.app_bar);
setSupportActionBar(mToolBar);
getSupportActionBar().setTitle("Some titile);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mToolBar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
/**
change code here*/
}
});
}
要提供正确的向上导航,您必须:
在清单中定义父级 activity。
<activity
android:name=".MainActivity"
android:parentActivityName=".HomeActivity"
....>
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".HomeActivity" />
</activity>
并且在 MainActivity 中:
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
MainActivity 的xml 中应该有一个工具栏。然后覆盖 onOptionsItemSelected.
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case android.R.id.home:
finish();
return true;
}
}
而不是使用 finish(),您应该考虑使用 NavUtils.navigateUpFromSameTask(this)
或 NavUtils 的其他类似方法 class。
使用像 singleTop 这样的启动模式来防止重新加载父级 activity。
可以找到有关正确向上导航的更多信息 here。